次の宣言は、エラーが発生します。なぜ静的フィールドを初期化すると恐ろしいランタイムが発生するのですか? "あいまい一致が見つかりました"?
private static IDictionary<int, string> Dic = new Dictionary<int, string>();
次がいない間:
private static IDictionary<int, string> Dic;
何...?私は静的なコンストラクタで辞書を初期化することができますが、私が実際に使用したいのはリテラル初期化子(同じ問題)です。
を編集します。問題は静的コンストラクタに関連しているようです。静的なコンストラクタを宣言すると、同じエラーが発生します。疑いなくフィールドを初期化することによって、コンパイラはデフォルトの静的コンストラクタを生成します。私たちのアプリの一部は、リフレクションを使用してインスタンス化するクラスを選択しています。静的なコンストラクタメソッドで混乱している可能性があります。
実際、スタティックフィールド(static int i = 0;
)にイニシャライザを追加して同じ結果を得ることができます。これは実際に私たちのアプリ全体のアーキテクチャと関係があります。私はこれと別の方法を行っています。すべてのあなたのご意見ありがとうございます。
私はそれが私が持っているすべての参照と関係があると確信しています。それは大きなプロジェクトに入っています。 – Ishmael
'Dictionary <,>'型( 'System.Collections.Generic'以外のもの)を含む名前空間をインポートしましたか? – Ani
http://weblogs.asp.net/pjohnson/archive/2006/08/11/Ambiguous-match-found.aspxとhttp://dotnetdebug.net/2006/03/21/ambiguous-match-foundを参照してください。 -in-a-web-control-a-possible-bug/ –