-1

構造体内のリストのプロパティを記述するにはどうすればよいですか?

私のコード:

public struct Config
{
    List<int> ipAddress = new List<int>();
}
4

2 に答える 2

5

自動プロパティを作成することだけが必要な場合 (null参照型のデフォルトであり、初期化できません)、@scartag が示唆するように実行できます。

public struct Config
{
    // will default to null
    List<int> ipAddress {get; set;}
}

ただし、コードの内容を実行して実際の参照に初期化しようとすると、 のフィールドを初期化できないため、問題が発生しますstruct。デフォルトのみを持つことができます。さらに悪いことに、これを行うためにデフォルトのコンストラクターをオーバーライドすることはできません。

一般的に言えば、struct小さい、できれば不変の型に最適な傾向があります。これだけに使いたくない理由はありますclassか?

ここで、「初期化された」フィールドを使用して を作成たい場合は、遅延ロジックでだますことができます。struct

public struct Config
{
    private List<int> _ipAddress;
    private bool _isAssigned;

    public List<int> 
    {
        get 
        {
            if (!_isAssigned)
                _ipAddress = new List<int>;
            return _ipAddress; 
        }
        set
        {
            _ipAddress = value;
            _isAssigned = true;
        }
    }
}

しかし、実際には、フィールドを初期化したり、デフォルトのコンストラクターをオーバーライドしたりできるため、このレートでは a を使用するclassことをお勧めします。

public class Config
{
    public List<int> ipAddress {get; set;}

    public Config()
    {
        ipAddress = new List<int>();
    }
}

繰り返しますが、Andrew がコメントで述べたように、MSDN のガイダンスを参照してstructclass

于 2013-02-07T00:05:59.933 に答える
2

下記参照。

public struct Config
{
    List<int> ipAddress { get; set; }
}

または、自動 get/set を使用したくない場合

public List<int> ipAddress 
{
    get
    {               
        return ipAddress?? new List<int>();
    }       
    set 
    {
        ipAddress = value;
    }
}
于 2013-02-06T23:55:43.850 に答える