如何避免bool属性自动添加到列表元素(c#)

本文关键字:列表元素 添加 何避免 bool 属性 | 更新日期: 2023-09-27 18:05:37

我有以下c#代码:

   public class Res1
   {
        public string Name1   { get; set; }
        public string Name2   { get; set; }
        public bool   NameDef { get; set; }
   }
   ...
   ...
   List<Res1> list1 = new List<Res1> { };
   list1.Add(new Res1 { Name1 = "testName" });      

list1的结果将是:

[{"Name1":"testName","NameDef":false}]

但我只希望列表条目包含Name1,如果namdef未设置,如Name2 (string)

如何避免bool属性自动添加到列表元素?

如何避免bool属性自动添加到列表元素(c#)

您不能使用bool数据类型实现这一点。它有一个值(默认为false)。对于bool?数据类型(可空布尔),它应该工作。

public class Res1
{
     public string Name1   { get; set; }
     public string Name2   { get; set; }
     public bool?  NameDef { get; set; }
}

通过在它的类型后添加?使您的bool可为空:

public class Res1
{
    public string Name1   { get; set; }
    public string Name2   { get; set; }
    public bool?   NameDef { get; set; } //mind the ?
}
...
...
List<Res1> list1 = new List<Res1> { };
list1.Add(new Res1 { Name1 = "testName" });

默认情况下,bool总是必须保存truefalse,就像int只能保存数字一样-而不是null。通过在非空类型后添加?,可以使其为空。它是Nullable<bool>的简写。这样可以有效地使它们为空。

MSDN有一些关于可空类型的进一步阅读