構造体内のリストのプロパティを記述するにはどうすればよいですか?
私のコード:
public struct Config
{
List<int> ipAddress = new List<int>();
}
構造体内のリストのプロパティを記述するにはどうすればよいですか?
私のコード:
public struct Config
{
List<int> ipAddress = new List<int>();
}
自動プロパティを作成することだけが必要な場合 (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 のガイダンスを参照してstruct
、class
下記参照。
public struct Config
{
List<int> ipAddress { get; set; }
}
または、自動 get/set を使用したくない場合
public List<int> ipAddress
{
get
{
return ipAddress?? new List<int>();
}
set
{
ipAddress = value;
}
}