-3

インデックス付きプロパティを宣言するにはどうすればよいですか?

public class PublishProperties : ScriptableObject {

List<string> m_shellPathsT = new List<string>();
List<string> m_shellPathsL = new List<string>();
public List<string> ShellPath[int index]
{
    get 
    {
        if (index == 0)
            return m_shellPathsT;
        else
            return m_shellPathsL;
    }
}

これはコンパイルされず、これをコーディングする方法がわかりません。他の要件のため、このように宣言された 2 つの異なるリストが必要です。

私は通常、リストの配列を持っています...

またはこのように

public List<string>[] m_shellPaths = { new List<string>(), new List<string>() };

ただし、これも他の要因では機能しません... (基本的に、コンストラクターで宣言された変数などでは機能しない、自動的に発生するシリアル化がいくつかあります。)

4

3 に答える 3

1

質問する前にドキュメントを読んでください。

public List<string> this[int index]
{
    get 
    {
        if (index == 0)
            return m_shellPathsT;
        else
            return m_shellPathsL;
    }
}
于 2013-02-19T23:37:00.183 に答える
0

C# は、インデックス付きプロパティをサポートしていません。を使用してクラス自体にインデックスを付けることができます

public List<string> this[int index]
{
    get 
    {
        if (index == 0)
            return m_shellPathsT;
        else
            return m_shellPathsL;
    }
}

しかし、この非常に特殊なケースでは、このタイプの実装のセットがいくつか必要であり、シリアライゼーションによってより洗練された宣言を使用できなかったため、これを行うことができませんでした。

メソッドは使用できますが、プロパティほど強力ではありません。これに関する詳細情報
を見つけました。

ただし、この状況下では、追加の配列を追加できない理由はありません

public List<string> m_shellPathsT = new List<string>();
public List<string> m_shellPathsL = new List<string>() ;
public List<string>[] m_shellPaths = new List<string>[2];

public PublishProperties()
{
    m_shellPaths[0] = m_shellPathsT;
    m_shellPaths[1] = m_shellPathsL;
}
于 2013-02-20T00:30:39.240 に答える