2

私が作った場合、私は外部クラスを持っていItemます:

List<Item> items = new List<Item>();

デバッグ中にマウスを合わせると表示されます

'items.Count' がタイプ 'System.ArgumentException' int {System.ArgumentException} の例外をスローしました

このクラスのコード全体を共有することはできませんが、その理由は何でしょうか。クラスを逆コンパイルしたところ、GetHashCode と Equals メソッドがオーバーライドされていることがわかりました。原因になるのでしょうか?

編集

デバッグ中、行の後

List<Item> items = new List<Item>();

イミディエイト ウィンドウを使用してそこに items.Count を書き込むと、次のようになります。

'items.Count' threw an exception of type 'System.ArgumentException'
base {System.SystemException}: {"Cannot find the method on the object instance."}
Message: "Cannot find the method on the object instance."
ParamName: null
4

1 に答える 1

1

ILSpy または Reflector をざっと見てみると、List<T>.Countおそらくその例外を発生させることはできませんでした。

/// <summary>Gets the number of elements actually contained in the
///   <see cref="T:System.Collections.Generic.List`1" />.</summary>
/// <returns>The number of elements actually contained in the
///   <see cref="T:System.Collections.Generic.List`1" />.</returns>
public int Count
{
    get { return this._size; }
}

デバッグ中にこれを受け取った場合、この例外の原因となっているサードパーティ製のコントロールまたはプラグインがあると思います。クリーニング/再構築、サード パーティの参照の再追加、および/またはセーフ モードでの Visual Studio の実行を試してください。

于 2012-07-06T15:11:18.647 に答える