除了将IEnumerable设置为可选之外的其他选项

时间:2016-03-21 22:23:55

标签: c# linq

从我读过的内容IEnumerable无法设置为可选。我有一个方法public IEnumerable<StatusInt> StatusInts { get; set; },如果用户没有从组合框中选择一个选项,它总是以默认值0传递。对于简单的数据类型,我可以添加?并且参数变为可选,并且传入null。是否可以使用IEnumerable

进行类似的操作

1 个答案:

答案 0 :(得分:2)

可以使用?字符将值类型设置为可选。

int?'只是Nullable<int>

的缩写

IEnumerable不是值类型,它是引用类型。引用类型已经是可选的 - 如果需要,您可以返回null

IEnumerable<StatusInt> StatusInts
{
   get
   {
       if(this.OptionIsSelected)
       {
           return GenerateOptions(this.Option);
       }
       else 
       {
            return null;
       }
   }
}

但是,我建议你不要这样做。相反,返回一个空的可枚举。这样您的调用代码就不需要检查null值。您不太可能无意中触发空引用异常。

IEnumerable<StatusInt> StatusInts
{
   get
   {
       if(this.OptionIsSelected)
       {
           return GenerateOptions(this.Option);
       }
       else 
       {
            return Enumerable.Empty<StatusInt>();
       }
   }
}