
解決策求む!! → C#のvarとtry~catchが糞すぎる ||| http://d.hatena.ne.jp/yaneurao/20100929
2010-09-29 07:28:03
逆向きの型推論もできるようにして HogeClass hoge = NULL; hoge = new (...); とかできるようにすれば良さそうに思えるんだけど、何か問題あるのかしら。 http://d.hatena.ne.jp/yaneurao/20100929
2010-09-29 07:53:03
@alohakun 「逆向きの型推論もできるようにして」は、最初に明示的に型を書かないといけなくて、var x = hoge.XXX(); のようにして複雑な型名を受け取るケースにおいて困るのです。 型名は絶対に明示的には書きたくないのです。
2010-09-29 08:10:49
@yaneuraoh 次善の策(旧コードの互換性を保ちつつ C# の仕様を変更すること前提)のつもりで書きましたが、ご指摘の通り、new で生成する時の型名省略にしか使えないので、ほとんど役に立ちませんね… ありがとうございます。
2010-09-29 08:27:15
やっぱりC#でもコンストラクタで例外投げるべきじゃないよ。オープンが面倒とか、メソッドチェインさせて勝手に中で開かせればいいよ。
2010-09-29 11:31:19
@bleis コンストラクタと、Dispose()では例外投げないのは基本 =>今週末は福岡 http://j.mp/d08WKi
2010-09-29 11:32:59
いや、もちろん、例外を投げる場合は、よっぽどの「異常事態」でない限り、事前に例外を投げないことをチェックできることを前提として、ですけどね。
2010-09-29 11:41:37
@bleis RAIIとかGCってコンストラクタって関係ある?デストラクタとかだとなげちゃいけないと思うけど・・・
2010-09-29 11:44:11
@nakawankuma コンストラクタで処理することが相応しいような処理を、例外を避けたいからという理由だけでコンストラクタ以外で行わせるのは馬鹿げてると思いません?
2010-09-29 11:45:46
@nakawankuma 例外を避けるためだけに、コンストラクタでは初期化せず他の関数で明示的に初期化するようなクラスは、明らかに設計がおかしい…というレベルの話ですね。
2010-09-29 11:47:34
Java使っててコンストラクタで例外が投げられたからって別に困ったことはないけどなあ。不良品がnewされても困ると思うんだけども @bleis GCに頼ってる言語こそコンストラクタで例外投げちゃだめだと思うんだ。
2010-09-29 11:47:37