0

コントロールを含む dll を作成しました。dll を参照すると、コントロールがツールボックスに正常に追加されます。問題は、アプリケーションを実行すると、次のエラーが発生することです。 An unhandled exception of type 'System.StackOverflowException' occurred in xxx.dll

デバッガーがエラーを強調表示する方法は、以下の関数にあります。

public ItemType this[int i]
{
    get
{
    return (ItemType)this[i];
}
set
{
    this[i] = value;
}
}

このエラーは再帰呼び出しが原因で発生することがわかっているので、この問題を克服するために上記を書き直すか、変更するにはどうすればよいですか。できるだけ早くコードヘルプをお願いします

ありがとう

4

2 に答える 2

2

クラスでは内部リストを使用する必要があります。

    private IList<ItemType> _list = new List<ItemType>();
    public ItemType this[int i]
    {
        get
        {
            return _list[i];
        }
        set
        {
            _list[i] = value;
        }
    }
于 2012-12-07T11:48:36.963 に答える
0

次のように問題を解決しました。

public ItemType this[int i] 
{ 
    get 
    { 
        return (ItemType)((IList)this)[i]; 
    } 
    set 
    { 
        this[i] = value; 
    } 
}
于 2013-01-21T17:11:55.353 に答える