C♯, C#相談室 Part34
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/02(木) 20:45:59前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0357デフォルトの名無しさん
2007/11/02(金) 01:29:00そのデリゲートが使えるということですか?この場合引数はないので使えないと思うのですが。
また、デリゲートの定義全般の話ですので、一つのデリゲートの型が一致しても抜本的な解決にはならないかと。
>>356
型の定義が静的だ、という意味でしたらわかっています。
その定義をどうにかして見やすく配置できないかと考えてる次第です。
0358デフォルトの名無しさん
2007/11/02(金) 01:41:26void SendMethod() { }
Action sendMethod = new Action(SendMethod);
Func(sendMethod);
Action<T>
0359デフォルトの名無しさん
2007/11/02(金) 01:50:40すいません、がんばって理解しようとするのですが眠くてどうにもならないようです。
また明日の朝見直して理解しようと思います。
0360デフォルトの名無しさん
2007/11/02(金) 06:06:100361デフォルトの名無しさん
2007/11/02(金) 10:27:19void func()
{
0362デフォルトの名無しさん
2007/11/02(金) 10:29:12メソッド内で、一度代入したら不変であることを保証しようと思って、
void func()
{
readonly int i = OtherFunc();
〜
}
としようとしたのですが、readonly が使えるのはクラスのフィールドのみらしく、できませんでした。
これと同等の文法はありますか?
0363デフォルトの名無しさん
2007/11/02(金) 10:59:260364デフォルトの名無しさん
2007/11/02(金) 11:35:46出来てもいいと思うんだけど出来ないね。
言語仕様を出来るだけシンプルにしたかったんかな?
0365デフォルトの名無しさん
2007/11/02(金) 12:07:10変数宣言が多くて長いメソッドを書くなということでは
0366デフォルトの名無しさん
2007/11/15(木) 00:24:37皆さんも仕事でC++を使う人は辞めたほうが無難です。
0367デフォルトの名無しさん
2007/11/15(木) 00:33:52|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (=)
| ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
0368デフォルトの名無しさん
2007/11/15(木) 00:37:320369デフォルトの名無しさん
2007/11/15(木) 01:07:38きっとC++をただ使ってるだけだろうな
0370デフォルトの名無しさん
2007/11/15(木) 03:44:22皆さんも仕事で日本語を使う人は辞めたほうが無難です。
0371デフォルトの名無しさん
2007/11/15(木) 04:08:370372デフォルトの名無しさん
2007/11/15(木) 11:25:360373デフォルトの名無しさん
2007/11/15(木) 23:27:54オブジェクト作りっぱなしなんてC++ではありえない
そんな環境になれてしまうとC++が面倒に感じてしまう。
まぁ、C#は使いやすさと引き換えに速度を完全に捨てたらな・・・
0374デフォルトの名無しさん
2007/11/15(木) 23:41:29捨てたのはメモリだ
0375デフォルトの名無しさん
2007/11/15(木) 23:50:26ソクドモステテマスッテ
0376デフォルトの名無しさん
2007/11/15(木) 23:59:310377デフォルトの名無しさん
2007/11/15(木) 23:59:310378デフォルトの名無しさん
2007/11/16(金) 00:00:42それに初起動の速度もパフォーマンスだと考えると、メモリを食うならそれだけ起動が送れるからな。
0379デフォルトの名無しさん
2007/11/16(金) 00:04:58ネイティブのC#ならアンマネージドC#で作れるだろう。
ただし、APIは自作になるけどな。
0380デフォルトの名無しさん
2007/11/16(金) 00:05:35Delphi
0381デフォルトの名無しさん
2007/11/16(金) 00:12:14GCに関してはここによると
ttp://densanshokunin.at.webry.info/200702/article_1.html
> C++のstack > C#のFinalizeなし > > C++のheap = C#のDispose > C#のFinalize
ということらしい。スタックさいこーで次点がファイナライザなしのGCだそうだ。
C#が遅く感じるのはメタ情報を抱えたままなのが大きいように思える。
必要以上にコードやリソースの破棄と再ロードやページアウトインを繰り返していてこれが足を引っ張ってる。
JITやngenしててもメタ情報を参照するために結局もとのアセンブリもロードされているのが確認できる。
おかげで別の部分がメモリから追い出されることになりやすい。
0382デフォルトの名無しさん
2007/11/16(金) 00:19:380383デフォルトの名無しさん
2007/11/16(金) 00:24:30普通に一番使われてるからだろ。
それにGCの動きはシステムに激しく依存するから、言い出したらきりがない。
0384デフォルトの名無しさん
2007/11/16(金) 00:27:09ネイティブのC++出されてもね。それにネイティブコードはあっさりとOS壊すプログラム開発が
できる(例えやりたくなくても)という欠点があるから、今後は.NETもよりセキュリティ強化された
サンドボックス上で実行しなくてはならないと結論がでて、ネイティブは生き残れなくなるんだよ。
0385デフォルトの名無しさん
2007/11/16(金) 00:33:130386デフォルトの名無しさん
2007/11/16(金) 00:33:15マジで言ってんのか?だったらなんでWin32APIを.NETでサポートしないんだよ。
アンマネージドがマネージドに置き換えられるんなら、全部の機能が.NETから使えないとおかしいだろうが。
だいたいユーザー管理もまともに出来ないWindowsでソフトウェアのセキュリティ云々言われてもなあ?
0387デフォルトの名無しさん
2007/11/16(金) 02:10:110388デフォルトの名無しさん
2007/11/16(金) 02:11:05| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0389デフォルトの名無しさん
2007/11/16(金) 02:43:35きまってるだろうが、最初は置き換えるつもりだったけど厳しいから
方向転換したんだよ。
0390デフォルトの名無しさん
2007/11/16(金) 03:42:160391デフォルトの名無しさん
2007/11/17(土) 01:20:47string csvFileName = "test.csv";
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
csvの接続ロジック
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(commText, con);
DataTable dt = new DataTable();
da.Fill(dt);
OleDbConnection OleConn = new OleDbConnection();
ACCESSの接続ロジック
OleDA = new OleDbDataAdapter(expenditure, OleConn);
OleDA.Fill(Ds);
DDs = ddt;←ここがわからない
OleDbCommandBuilder cb = new OleDbCommandBuilder(OleDA);
cb.QuotePrefix ="[";
cb.QuoteSuffix = "]";
OleDA.Update(Ds) ;
CSVファイルをACCESSにインポートしたいのですが、CSVをテーブルに貼り付けた後は
どのようにしてACCESSにインポートすればよいのでしょうか?
上記のプログラムは一応コンパイルできるのですが、ちゃんとデータが移ってなくて・・・
どなたかわかる方がおられましたら、修正をおねがいします
0392デフォルトの名無しさん
2007/11/17(土) 01:21:370393デフォルトの名無しさん
2007/11/17(土) 11:14:16この時、C#ではどのようにして、その配列を扱うことができるのでしょうか?
0394デフォルトの名無しさん
2007/11/17(土) 11:34:03そのC++ってのはC++/CLIなのか?
0395デフォルトの名無しさん
2007/11/17(土) 12:10:06はい。基本的にはIntPtrがサポートされているものです。
0396デフォルトの名無しさん
2007/11/17(土) 12:23:22マネージド同士なら配列直接渡しゃいいじゃねーか
0397デフォルトの名無しさん
2007/11/17(土) 12:29:21正論。
>>395
何がやりたくてそのようなことをしようとしてるのか説明してくれないと。
0398デフォルトの名無しさん
2007/11/17(土) 12:47:38すいません。説明が悪くて。
アンマネージの配列のポインタが渡されて、それをC#クラスに渡したいというクラスがあります。
その方法としてIntPtr渡しを考えました。
アンマネージからマネージにマーシャルする方法もありますが、メモリコピーは避けたいです。
このような場合はマネージのみサポートする言語では作成しない方がいいのでしょうか?
0399デフォルトの名無しさん
2007/11/17(土) 12:55:04UnmanagedMemoryStream とか。
いざとなりゃ直接ポインタでもいいけどな。
0400デフォルトの名無しさん
2007/11/17(土) 12:58:36そもそも、C++の配列を作っている部分が既存部分でない(C#に対するラッパ部分)
であるなどといった状況なら、初めからマネージ配列にし、
C++内では必要に応じてpinしてやったほうが楽な気がする。
0401デフォルトの名無しさん
2007/11/17(土) 13:23:51特にC#はダメということではないのですね。ありがとうございます。
いただいたアドバイスをさらに調べてみます。
0402デフォルトの名無しさん
2007/11/17(土) 16:43:460403デフォルトの名無しさん
2007/11/17(土) 17:01:06【審議拒否】
∧,,∧ ∧,,∧ タリー
∧∧ (・` ) ( ´・) ∧∧
(ω・` ) U ) ( Uノ( ´・ω) キリバンナノニヨ
| U u-u u-u (U ノ
u-u ∧,,∧ ∧,,∧ u-u
(・ω・`) (´・ω・) コンナレスジャシカタネエヨナ
(l U) (U ノ
`u-u'. `u-u'
0404デフォルトの名無しさん
2007/11/17(土) 17:06:00403みたいのってひょっとして面白いと思ってコピペするのかね。
そんなの面白いと思うのは精神年齢永遠の12才の自分だけなのに
0405デフォルトの名無しさん
2007/11/17(土) 17:08:270406デフォルトの名無しさん
2007/11/17(土) 17:59:260407デフォルトの名無しさん
2007/11/17(土) 18:31:32C++からややこしい機能はできなくしたからこそ扱いやすい言語になってるのかと。
0408デフォルトの名無しさん
2007/11/17(土) 19:29:29client.Connect(comboBox1.Text,80);
でアドレスを渡して表示させています。
comboBoxにはFQDNを入れておりますがhttp://から記載するとエラーになります。
FQDNしか入れられないためにHTTPSでのアクセスが出来ていないのですが
どのようにすればSSLでのアクセスが可能になるのでしょうか?
0409デフォルトの名無しさん
2007/11/17(土) 21:57:07C++に挫折した人にぴったりですねhw
0410デフォルトの名無しさん
2007/11/17(土) 22:05:37AxWebBrowser なのか TcpClient なのかわからん
取り敢えず SslStream とか調べたらどうだ
0411デフォルトの名無しさん
2007/11/18(日) 00:07:17本当に大事なことは必要な機能を実装すること。
ややこしい機能はチーム開発や保守性をぶっ壊してくれるから
簡単にすることは大事。
0412デフォルトの名無しさん
2007/11/18(日) 00:08:08楽しいのも判るけどさスルーする事も大事。
0413デフォルトの名無しさん
2007/11/18(日) 00:26:01foreachなんかでも、マクロ使えば簡単にCでも使えるわけだし。
本当に言語選択で大事なのは、VMだとかOS依存部分だとかのもっと大局的な部分なんじゃないかなあ。
0414デフォルトの名無しさん
2007/11/18(日) 00:36:54何が良いとかは断言できない。
自分にとって、一番スマートにプログラミングできるのはC#だけど、
サーバサイドプログラミングでLinuxならJava、UnixならCを選択するのが良いと思う。
なにせ、並列処理はやはりUnix系使うのが一番堅実だから。
0415デフォルトの名無しさん
2007/11/18(日) 00:38:250416デフォルトの名無しさん
2007/11/18(日) 00:39:59・プログラムにおいて、エラーや例外などに強く簡単には暴走しないもの。
・少なくともすぐに「不正な処理」と表示し、データ諸共および自分自身までふっ飛ばすようなOSのような作りではない事。
0417デフォルトの名無しさん
2007/11/18(日) 00:40:080418デフォルトの名無しさん
2007/11/18(日) 00:42:080419デフォルトの名無しさん
2007/11/18(日) 04:36:13同一人物なのか 流行なのかwwww
0420デフォルトの名無しさん
2007/11/23(金) 01:24:28こんなやり方では駄目なんだろうか?
public static class Program
{
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Idle += Application_Run;
Application.Run();
}
private static bool _applicationRunning = false;
private static void Application_Run(object sender, EventArgs e)
{
if (_applicationRunning) { return; } else { _applicationRunning = true; }
Application.Idle -= Application_Run;
//ここにスプラッシュウィンドウだの、メイン処理だのを書く
//プログラムを終了させるべき場所にApplication.Exit()を書く
}
}
0421デフォルトの名無しさん
2007/11/23(金) 10:47:43それでおk。
0423デフォルトの名無しさん
2007/11/23(金) 16:42:35同時処理から完了までの流れがないと
大して意味ない気がするが…
どうでもいいが最近の書籍ではタイマー使って
一定時間同期的にスプラッシュ表示するやりかたばっか書かれてるな。
スプラッシュの意味ないっつうの。
まあ平気でビジーループ使ってる例よりはちょっとだけましだが。
0424420
2007/11/23(金) 17:23:29ご意見どうも。
実のところを言うと、スプラッシュウィンドウというよりは、
Form_Loadに全体の初期化処理を書きたくないので、
それをどこに書こうか、ということです。
必ずしも最初からFormを使うというわけでもないし。
あとは>>420の例で、何か過失を犯していないかを知りたかったのです。
0425デフォルトの名無しさん
2007/11/23(金) 19:03:56そうでないならなんもいらんと思うが。
0426デフォルトの名無しさん
2007/11/25(日) 18:00:35RotateTransformは中心で回転していないのか一定以上の角度になると上手くいきません。
画像中心で回転させるにはどう指定すればいいのでしょうか?
教えてください。m(_ _)m
public static Bitmap BitmapRotate(Bitmap bmp, float angle)
{
// 出力用
Bitmap dst = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb);
// Graphics オブジェクト
Graphics g = Graphics.FromImage(dst);
// 透明色でクリアする
g.Clear(Color.Transparent);
// 回転させる
g.RotateTransform(angle);
// 綺麗に回転させるフィルタ
g.InterpolationMode = InterpolationMode.HighQualityBilinear;
// 描画
g.DrawImageUnscaled(bmp, 0, 0);
// 解放
g.Dispose();
return dst;
}
0427デフォルトの名無しさん
2007/11/25(日) 20:45:04画像の中心を回転中心にするならそいうふうに移動させないと。
http://msdn.microsoft.com/library/ja/cpguide/html/_gdiplus_why_transformation_order_is_significant_usecsharp.asp?frame=true
移動→回転→元の位置に戻す
回転させたことないから間違ってたらスマンね
0428426
2007/11/26(月) 05:37:10ありがとうございました。m(_ _)m
// 中心を指定する
g.TranslateTransform(bmp.Width / 2, bmp.Height / 2);
// 回転させる
g.RotateTransform(angle);
// 元に戻す
g.TranslateTransform(-bmp.Width / 2, -bmp.Height / 2);
0429デフォルトの名無しさん
2007/11/28(水) 19:57:230430デフォルトの名無しさん
2007/11/28(水) 20:13:420431デフォルトの名無しさん
2007/11/28(水) 20:16:460432デフォルトの名無しさん
2007/11/29(木) 04:54:200433デフォルトの名無しさん
2007/11/29(木) 05:48:08ココ行ケヤ
JAVAとC#どちらが優れているか教えてください Part2
ttp://pc11.2ch.net/test/read.cgi/prog/1189919634/
0434デフォルトの名無しさん
2007/11/30(金) 21:56:41どのクラスから調べればいいですか?
ぜんぜん見つからない・・・
0435デフォルトの名無しさん
2007/12/01(土) 00:00:29使用していらっしゃるのでしょうか。
自分は今まで、ルート名前空間を汚したくない、或いは名前空間の
構造を崩したくないといった理由で using ステートメントを一切
使わず、愚直にも省略せず全部記述していたのですが、横に長く
なりすぎていよいよ疲れてきて、それに追い打ちをかけるように、
拡張メソッド (C# 3.0 言語仕様) を使うにはそのメソッドの属する
クラスの属する名前空間をインポートしてらねばならないという
ことを知って悩んでおります。
それなりに多様な名前空間を使用していますが、あまり多くインポートしても
逆に読みづらくなりそうに感じます。使用する名前空間それぞれどういった
基準でインポートするか否かを決めるか等、皆様どうか私に何らかの指針を
示して頂けませんでしょうか。
0436デフォルトの名無しさん
2007/12/01(土) 00:02:27型名重複するのなんてTimerぐらいだろ。
0438デフォルトの名無しさん
2007/12/01(土) 00:10:26クラス名が重複する場合は完全修飾名で書く
0439デフォルトの名無しさん
2007/12/01(土) 00:16:27文脈からしてひどく実直そうな人物と見るが、
努めてソフトにいうと、usingは普通衝突が発生しない限り使う。衝突しても、名前空間の張り替えをして使う。
よって、あなたがしてるようなコーディングはひどく非効率で例外的だ。今すぐusingステートメントを使うことをおすすめする。
それと、なんとなくIDEなどのコーディング補助を一切使ってない雰囲気があるのだが、
この際にそれらの機能を使ってみたらどうだろうか?
VisualStudio2005を使ってるなら、クラス名を書けば左下になにかでるはず。そこをクリックするか、Ctrl+Alt+F10を押して、
メニューから任意の名前空間を選べば、自動的にusingを書いてくれる。
0440デフォルトの名無しさん
2007/12/01(土) 00:21:23つまり、一回しか宣言しないクラスは完全修飾名で記述してもいいが、
例えば、ファイルアクセスクラスでSystem.IOを何回も呼び出す可能性が
多い名前空間はあらかじめ宣言しておいた方が効率が良い。
この効率が一番重要なのがRAD。
0441デフォルトの名無しさん
2007/12/01(土) 00:22:070442デフォルトの名無しさん
2007/12/01(土) 00:23:090443デフォルトの名無しさん
2007/12/01(土) 00:28:48プロパティを使うこと。
0444デフォルトの名無しさん
2007/12/01(土) 00:59:34usingディレクティブは使うなって言われるけどね。
ただ、それはエイリアスとかusing宣言とか代替があるから言えるわけで、
C#はガンガンusingする言語だと思っている俺。
0445443
2007/12/01(土) 01:25:47変えなければいけない。
0446デフォルトの名無しさん
2007/12/01(土) 01:30:23「using ステートメント」じゃなくて「using ディレクティブ」だろというか
そんなこと気にする前に基本的な言葉をだな(ry
まぁそれはいいとして >>444 もいっているように C++ で using namespace
が気になるのは、その他の仕様含めた総合的な要因によるもので、
その前提を元に C# は考えられていてほぼ危険性がクリアされているので
普通に使え。そっちのほうがみやすい。
0447デフォルトの名無しさん
2007/12/01(土) 10:19:35でもユーザコントロールから親のページクラスをどうすればアクセスできるのか想像できません
0448デフォルトの名無しさん
2007/12/01(土) 11:54:240449デフォルトの名無しさん
2007/12/01(土) 12:24:220450デフォルトの名無しさん
2007/12/01(土) 13:47:00できそうな気がする。。
0451デフォルトの名無しさん
2007/12/01(土) 14:22:26主キーは複合もあるので行でチェックするのがいいという前提で。チェック場所はいろんなイベントがあると思う
・DataGridVewのRowValidatingイベント
・DataTableのRowChagingイベント
※DBに問い合わせは論外。
他にもあるかもしれんが・・・。あったら教えて欲しいんですが。
で、入力された値をチェックと言うことでDataGridVewのRowValidatingでチェック。(ViewのことはViewでチェック)
他のクラスでチェックすると、調査時いろんなソースを追いかけないといけないので。
ほんでと、主キー重複、ユニークチェックメソッドはあるのか? → 調べたけどないと思う。
じゃ、別の方法でチェックするにはどうしたらいい?となると。
クラス内部で主キー、ユニークの値を配列で保持して、配列内をチェックしかないのかなと思ってるんだけど。
複合主キーの時は、それぞれの列の値を文字列連結して1つの文字列として保持する。
これ以外になんかいい方法ってないですか?
0452デフォルトの名無しさん
2007/12/01(土) 14:25:060453デフォルトの名無しさん
2007/12/01(土) 14:49:10DataGridVewの入力時エラーになるけど
0454デフォルトの名無しさん
2007/12/01(土) 16:24:19逆、参照するのがテキストボックス
0455デフォルトの名無しさん
2007/12/01(土) 17:25:070456デフォルトの名無しさん
2007/12/01(土) 19:25:42マスターページの値を更新。
■ このスレッドは過去ログ倉庫に格納されています