1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
232 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:06:54 ] リフレクション使えばできると思うが、やるほどの価値はないと思う。
233 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:02:54 ] ResourceManager.GetObject使えばできるけど厳密な型指定できないよ
234 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:27:36 ] 何をしたいのかを書けば、もっといい解決法があるかもよ
235 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:13:14 ] >>232 >>234 リソース名が連続した英数字なので、for文で数十の文字列の配列を作ったんですが、それをリソース名の指定に使う方法が分からなくて・・・ 手動でやるよりはるかに効率的だと思うので、できればさわりだけでも簡単に教えてもらえればと >>233 では、結局出来ないということになるんでしょうか・・・?
236 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:21:16 ] Properties.Resources.abc;の実装がどうなってるかみなよ。
237 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:18:33 ] >>230 XLinqでも使ってみれば
238 名前:188 mailto:sage [2008/01/18(金) 11:19:39 ] 遅くなりましたが無事解決しました! ありがとうございました。
239 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:01:23 ] byte[] b1 = new byte[] {1,2,3,4}; byte[] b2 = new byte[] {1,2,3,4}; があったとして、2つの配列の内容が全て等しいか簡単に調べる方法ってないですか? b1 == b2; も b1.Equals(b2); もfalseになります(´・ω・) やっぱいちいちforeachで回さないとダメですか?
240 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:04:53 ] うむ Array.Equals は object.Equals と変わらんからな
241 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:06:27 ] ぶ、C# 配列 比較 で検索したらすぐ見つかりました。 出来ないみたいですねorz お騒がせしました。
242 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:09:45 ] 継承クラスで共通のメソッド実行時 親クラスで共通の処理をさせたいのですがどうすればいいでしょうか うまく説明できないんですがポリモーフィズム的なメソッドの共通処理を 継承クラスでは意識せずに親で処理させたいのですが・・・
243 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:24:50 ] //親 virtual void Hoge() { ... } //子 override void Hoge() { ... base.Hoge(); } じゃあかんのん?
244 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:27:51 ] >>243 やっぱりそうなりますかね base.Hoge()の処理は必ずして欲しいのに base.Hoge();を付け忘れちゃったりするものですから
245 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:21:12 ] Hoge は virtual じゃなくして、HogeOverridable を virtual にして Hoge のなかで HogeOverridable を呼ぶ ただし派生クラスで基底クラスの処理の呼び出す位置を変更できないデメリットもある
246 名前:231 mailto:sage [2008/01/18(金) 19:49:57 ] >>231 ですが www.atmarkit.co.jp/fdotnet/dotnettips/220resources3/resources3.html を参考に Assembly thisExe = Assembly.GetExecutingAssembly(); ResourceManager TMPres = new ResourceManager( "***.Properties.Resources", thisExe); xxx = (Image)TMPres.GetObject("abc"); とやったらできました。
247 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:10:42 ] Image img = (Image)Properties.Resources.ResourceManager.GetObject( "hoge" );
248 名前:デフォルトの名無しさん [2008/01/18(金) 23:19:52 ] VS2008を使っていますが、 FormのFormClosingイベントを捕らえて フォームを閉じることを中止するにはどうすればいいのでしょうか? 以下のように書いてもだめでした。 private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { DialogResult result = MessageBox.Show("変更を保存しますか?", "確認", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Yes) { this.menuSaveProject_Click(sender, e); } else if (result == DialogResult.Cancel) { return; // ←これ } } よろしくお願いいたします。
249 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:26:03 ] 引数調べれ
250 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:28:22 ] e.Cansel = true; とやればいいようですね(´・ω・`) 今までeなんて無視してました ありがとうございました
251 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:29:03 ] ていうかイベントの解説に書いてるよな
252 名前:デフォルトの名無しさん mailto:age [2008/01/19(土) 00:16:31 ] IPAddress[] addrs; があったとして、 この中から特定のIPの項目だけ削除ってどうすればいいんでしょうか。 InteliSenseで見てると addrs.Except(); とかそれっぽいのはあるんですが、いまいち使い方がわかりません・・・
253 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:22:22 ] 配列は要素の削除とかできないので作り直し Array.FindAll でもいける
254 名前:252 mailto:sage [2008/01/19(土) 01:08:38 ] >>253 ありがとうございます。やっぱり作り直ししかないんですね(´・ω・) でもFindAllのおかげでさっくりいきました。 ありがとうございました。
255 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:23:46 ] List<IPAddress>でいけー
256 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:24:22 ] >>254 List<>つかおうぜ
257 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:32:56 ] Listって要素の削除は向いてないんじゃない?
258 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:43:53 ] ほえ?
259 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:45:39 ] >>257
260 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:47:58 ] >>257 ( ^ω^)・・・
261 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:05:44 ] (^ω^;)⊃ アウアウ!! ⊂ミ⊃ ) / ヽ
262 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:47:03 ] またRemoveAll()の流れなのか・・・
263 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:04:38 ] 末尾以外の削除は遅いと思うんだけど、大丈夫なわけ?
264 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:08:48 ] >>263 実装に因る てか少なくとも配列を使うのよりは高性能に作られているとうれしい(ビクンビクン
265 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:10:29 ] >>264 実装見ろよ
266 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:55:24 ] 要素の削除と挿入をやるならLinkedListでしょ? ランダムアクセスできないけど。
267 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:37:57 ] >>266 > ランダムアクセスできないけど。 それが答えだ。
268 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:28:45 ] それは削除にむいてないんじゃなくて、 ランダムアクセスにむいてないだけ。
269 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:57:04 ] ある時点のList<T>の内容を配列か何かに保存しておき、その内容に戻すということをしたいのですが、 インスタンスを変えたくない場合は、Clearして一つずつAddし直すしかないのでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:58:58 ] 要するに、コストの問題だ。 データを参照するより削除と挿入の方が多いならLinkedList だろうし、 頭からforeachしたりインデクスでアクセスする必要があるならList。 目的に応じて使い分ければ済むという当たり前のことだろ。
271 名前:269 mailto:sage [2008/01/19(土) 10:02:53 ] >>269 AddRangeってのが目に入っていませんでした。 ClearしてAddRangeが正解でしょうか。
272 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:14:14 ] >>268 ahosugi
273 名前:252 mailto:sage [2008/01/19(土) 10:40:42 ] これは・・・荒らしちゃったかも(・ω・`) なんかごめんなさいです。 配列っていろいろ考えとかないといけないんですね。要素もすくないし、参照より削除や挿入が多いと思うんで、LinkList使ってみようかなと思います。ググってみます。ありがとうございました。
274 名前:252 mailto:sage [2008/01/19(土) 10:43:27 ] LinkedListですね、すいません(汗
275 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:51:22 ] >>270 そこでB*木とかRB木とかですよ
276 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:56:47 ] HashSetが合いそうだよなあと確かに話を聞いていて思ったが 要素数少なそうとも思ったのでむしろListでいい気もしたので 言わなかった
277 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:14:25 ] >>245 すみませんあれからいろいろやってみたのですが class kitei { public void Hoge() { 基底の処理; 派生Hoge呼び出し; } } class hasei : kitei { public virtual void Hoge() { 派生の処理; } } ということ感じになるのでしょうか 基底からの派生hogeのやり方がわからず詰まってしまいました
278 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:18:07 ] 基底にvirtualなメソッドを一つ増やせ
279 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:29:27 ] >>278 共通でない処理を切り分けてvirtualメソッドを作って 基底で public void Hoge() { 基底の処理; HogeSub(); } public virtual void HogeSub() { } という風にせよということでしょうか。 メソッド一つで自動的に裏で共通処理できたらいいなーと思ったんですが 使用者が何をするのか明示的に指示するのが正解か
280 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:37:21 ] >>279 >メソッド一つで自動的に裏で共通処理できたらいいなー 良くないだろ怖いよそんなのw っていうか、チミは普通に継承の意味が分かってないだけとちゃうんかと
281 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:44:55 ] >>280 確かにそのとおりなんですよね… 派生を多人数が使うときにちゃんと規定どおりに使ってくれない場合があるもんで もう強制自動処理にならんかなーと思った次第です…
282 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:57:57 ] >>281 テンプレートメソッド的な工夫ではダメなの? つまりテンプレートメソッドから呼び出されるメソッドの方をabstractなりvirtualに すればよくない?
283 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:02:35 ] >>282 具体的に言うとちょっと極端な例ですが データ入力して保存するという共通処理で 親 public void ClickSaveButton() { 入力チェック() データ保存() ログ出力() } abstract void 入力チェック() abstract void データ保存() abstract void ログ出力() とやるとabstractなんでそれぞれの実装は一応してくれんるんだが セーブボタンを押したときClickSaveButtonを呼び出して欲しいのに データ保存()だけ入れるやつとかいるんですよ
284 名前:283 mailto:sage [2008/01/19(土) 16:12:27 ] 最初の話とずれてますね… 親 public void ClickSaveButton() { 入力チェック() データ保存() ログ出力() } abstract void 入力チェック() abstract void データ保存() private void ログ出力() //共通処理 いい子 セーブボタン_Click { ClickSaveButton() } だめな子 セーブボタン_Click { データ保存() } セーブボタン_Click { 入力チェック() データ保存() }
285 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:15:48 ] もはや最初と別の話になってるような気がするんですが。。
286 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:20:51 ] >>284 まあどうしてもということなら、その例ならSaveButtonClickedイベントを持つ インターフェイスをコンストラクタに取るようにする、みたいな姑息な 対策はできるんじゃない?
287 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:28:03 ] >>285 自分でもよんでもよくわからない例でした・・・ つまり共通処理とabstractな派生の処理を組み合わせたテンプレートメソッドを 作ったんだがテンプレートメソッドを使わないで処理するやつがいるのです。 だからabstractなメソッド一つで共通も派生処理も出来たらなーと思ったのです て、あーもうだめです日本語でおkです…
288 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:19:10 ] セーブボタン_Click が ClickSaveButton() を呼び出すと決まっているなら 基底クラスでそう定義しておけばいいんじゃないのか?
289 名前:283 mailto:sage [2008/01/19(土) 17:25:35 ] >>286 なるほどイベントを使うというのもいいですね >>288 派生では実装無しですか、それだとすっきりですね この方式が一番スマートな気がします
290 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:48:35 ] 派生クラスでオーバーライドさせるためのメソッドはprotectedにしとくもんだよ
291 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:54:35 ] 284のセーブボタン_Clickは、みんな親クラスのメソッドなのでは?
292 名前:デフォルトの名無しさん [2008/01/19(土) 19:02:51 ] class Base{ void method(){・・・} ・・・ } class Derived : Base{ void method(){・・・} void method2(){・・・} ・・・ } で、 Base obj = new Derived(); obj.method(); とできるのはなぜ? これじゃobj.method2()とできないから Derived obj = new Base(); obj.method(); と書くべきじゃないですか?
293 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:06:35 ] おまえは何を言ってるんだ
294 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:06:56 ] >>290 そうでしたか…勉強になります >>291 そうななってしまいますね…そしてそれだも問題なしとなる… ボタンクリック以外にも場合によってセーブ処理を走らせる必要がある場合の対応と読み替えてください…
295 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:09:27 ] >>293 DerivedよりBaseの方が持ってる情報が少ないのに 型になるのはおかしいということです Base obj = new Derived(); と書いたら、Derivedのメンバでアクセスできないものがでてきてしまいませんか?
296 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:12:12 ] >>292 多態化から勉強し直せ。 Derivedじゃない他のBaseから派生したクラスを同じ流れで取り扱えるようにだよ。 ちなみにvirtualとoverrideしないと、前者のobj.method();が呼ばれるのはBaseのほうだぞ。
297 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:15:31 ] >>296 なるほど多胎っすか だったらDerived obj = new Derived(); obj.method(); でいいんじゃないですか? わざわざBaseを絡ませなくても・・・
298 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:17:14 ] >>297 2行目読めよ
299 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:21:16 ] >>298 Base obj1 = new Derived1(); Base obj2 = new Derived2(); Derived1.method(); Derived2.method(); とできるってことですか? Derived1 obj1 = new Derived1(); Derived2 obj2 = new Derived2(); と同じ挙動だと思うんですが、意味あるんですか? アクセスできるメンバが減ってるだけだと思うのですが・・・
300 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:27:24 ] 本当に読んだか? class Hoge : Base{ override void method(){・・・} ・・・ } というクラスを後から追加しても Base obj = new Hoge(); obj.method(); でHogeクラスのmethodを呼べるだろ というかその辺の入門書にもかいてあるだろ・・・
301 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:30:32 ] 型っていうのは、最低限それらのメンバが使えることを保証するもの
302 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:49:25 ] 呼び出す側をベタに書くから分かりづらい public void Write(Stream stream) { stream.Write(this.data, 0, this.data.Length); } ほらstreamはFileStreamでもMemoryStreamでもGZipStreamでもなんでも持ってこい
303 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:53:59 ] 例えば public void show(object o) { MessageBox.Show(o.ToString()); } というメソッドを show(5); でも show(DateTime.Now); でも呼べるでしょ。そういうこと。
304 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:09:15 ] >>302 そういう間違いそうなのはふらっとに書くなよ
305 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:15:53 ] 問題点を指摘してあげればプラスになるぜ
306 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:33:25 ] >>300-303 ああなるほど Streamの例は分かりやすいですね Streamを継承したクラスの分だけ全部オーバーロードしなくても 勝手にどれでも動くようにできるということですか・・・ ライブラリを使うときは便利そうですけど 自分で設計するのは難しそうですね
307 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:34:53 ] こういうこともできるんですか? Base[] array = new array[3]; array[0] = new Base(); array[1] = new Derived1(); array[2] = new Derived2(); foreach(Base t in array){ t.method(); }
308 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:37:35 ] 言語の習得にはトライ&エラーも大事だぜ 試せることは試す
309 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:05:25 ] >>308 まったくそのとおり 書いてどうしても通し方がわからなければ聞くのがいいね
310 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:07:13 ] で、>>307 に答えられる人いないの?
311 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:08:38 ] 答えられる人がいないとでも思ってるのか? 安い挑発する前に手を動かせよ
312 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:09:50 ] >>311 死ね
313 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:11:20 ] はい
314 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:12:56 ] >>311 答えろ、糞
315 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:13:55 ] 馬鹿にはできないんじゃね?
316 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:19:46 ] >>310 は偽物です >>308 一通り疑問に思ったことはやってみました Base obj = new Derived(); (obj as Derived).method2(); みたいなことをすればDerivedが持つメソッドも呼び出せるんですね (なんか危なそうですが) この場合、objが本当にDerivedのインスタンスじゃないと 実行時エラーになりますね
317 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:38:11 ] 基本クラスは派生クラスの実装を知らないから 派生クラスのメソッドは呼び出せないようになっている
318 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:39:21 ] イテレータ・・・と言いたいところだけど C#のイテレータって違うんだよな
319 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:47:29 ] (obj as Derived).method2(); こういうのはダウンキャストという
320 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:58:10 ] objがDerived型だという確信があるんだったらasじゃなくてキャストしたほうがいい asは確信がない時に使うもの
321 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:51:29 ] この変の話は実例みて解説してるの読んで勉強してから出直せ 確か@ITに猪俣の書いた記事であったから
322 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:56:54 ] 派生のメソッド呼んでほしいような場合にオーバーライドを使う。 それが多態ということ。 呼ぶ側のコードでは実際の型を知らなくても、 オブジェクト自身が必要な動作をしてくれる。 だからストリームの実体がなんだろうが 使う側のコードは変わらない。
323 名前:デフォルトの名無しさん [2008/01/20(日) 05:21:37 ] .netで勉強しようとしてるのですが、expressで致命的に不満が残る欠陥って何かありますか? 当方、VisualStudioを本格的に触るのはVB6.0以来です。 www.microsoft.com/japan/msdn/vstudio/products/vs08/compare.aspx ↑ ここの性能比較を見たのですが良くわかりません。 特に、プロフェッショナルと比べて大きな違いがあれば教えていただけないでしょうか。 モバイルやofficeプログラミングはいらないのですが、 「クラス デザイナ / オブジェクト テスト ベンチ」、その他が無くて困ることってありますか? フォームの編集はできるんですよね? よろしくお願いします。
324 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:28:12 ] >>323 スキル次第。 つーかVSスレで聞け
325 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 07:10:03 ] >>323 Expressだと全角英数は使えないよ
326 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:27:38 ] いきなり欠陥とか何言ってるんだこいつは。
327 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:29:41 ] 323がVS2008Expressを使いこなし限界にぶち当たるはるか以前にVS2010が出てしまうことを予言しておこう
328 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:30:23 ] スタンダードからはデフォで使えるコントロールが増えているとか 気になったのはそれぐらいかな
329 名前:デフォルトの名無しさん [2008/01/20(日) 11:53:12 ] >>7 に関し MSは複雑になり過ぎたWinAPIから.netのクラスに 移行するということを.netが出てきた当時聞いたこと があります。 しかし、現状を見てみると、オーバーヘッドで起動は 遅いし、肝心のところはAPIがないと作成できない、 XPではフレームワークをインストールしないと ダメだとか、良いところがないような気がします。 C#を含め.net環境は今後どうなるのでしょうか。 今、C#を使ってますが他の開発環境に移行した方が 良いのかなと悩んでいます。 あ、一番聞きたいことはWinAPIがなくなるかどうか ということでした。
330 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 11:57:12 ] 釣りなので放置してよし
331 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 12:30:21 ] >MSは複雑になり過ぎたWinAPIから.netのクラスに >移行するということを.netが出てきた当時聞いたこと >があります。 これに関してはWin32APIではなく、 COMで拡張していた各種サービスへのAPIを.NETベースにしようということだった。 これがWin32のAPIと誤解され一人歩きしてた。 そして、おそらくJavaへの牽制のため、MSもエバンジェリストといわれる輩もわざと 誤解が一人歩きするのを放置してた。
332 名前:デフォルトの名無しさん [2008/01/20(日) 12:36:11 ] >>331 回答ありがとうございます。 C#スレでこんなことを言うのも何ですが 今更ですが、C#のアドバンテージはどういった 点になりますでしょうか。 そういえば、ソフトウェア誌上でもC#の記事は 少なくなって来たような気がしますし。