、次は有効な構文であり、これは理にかなって:今一貫性のない初期化構文
string[] v = {"a","b"};
しかし、これを考慮してください。我々は
void method(string[] p) {...};
を定義すると仮定すると、その後、次は有効ではありません:上記と矛盾している
method({"a","b"});
。
ここでメソッド呼び出しを有効にすることを妨げる技術的な理由はありますか?つまり、構文の解釈にはあいまいさがありますか?あるいは、実装が不可能なメモリ管理や永続性に問題がありますか?
編集: エリック・リッペルトの答えは興味深いですが、私が実際に尋ねていなかったデザインの「なぜ」に答えています(そして、この質問は元々閉じられていました。答えの)。
L.Bの答えは実際には、なぜこの理由が許されなかったのか(理由はEric L.コメント)。しかし、LBの答えは、現在のところ、確かに、そのような構文が許されない理由は確かに正しいですが、これは実際に私が求めていた問題なので、LBの答えを正しいものとして選択します(正直なところ、厳しい選択...)。
これは有効です: 'method(new [] {" a "、" b "});' –
'voidメソッド(KeyValuePair p){}'どのメソッドが呼び出されたとしますか? ? (辞書の初期化を参照してください) –
これは矛盾していません。型推論に基づいています。しかし、C#が型の推論をどのくらいかかり、強く入力する前に分解が始まり、L.Bがどこでそれが起こる可能性があるかという素晴らしい例が得られるまでの合理的な制限があります。 –