【发布时间】:2017-02-19 15:20:40
【问题描述】:
我知道这可以使用 null 来完成,所以我有一个解决方法,但我想知道是否有更好的方法可以为类设置可选的 int[] 参数?
class PriceLevels
{
public int[] priceLevels { get; }
private readonly int[] defaultPriceLevels = { 2, 3, 3, 4, 5, 6 };
public PriceLevels(int[] newPriceLevels = defaultPriceLevels)
{
priceLevels = newPriceLevels;
}
}
这给了我一个错误,说这是一个无效的表达式 defaultPriceLevels 必须是常量。我该如何解决这个问题?
我能想到的一种解决方法是这样,但我不太喜欢这个解决方案
class PriceLevels
{
public int[] priceLevels { get; }
private readonly int[] defaultPriceLevels = { 2, 3, 3, 4, 5, 6 };
public PriceLevels(int[] newPriceLevels = null)
{
if(newPriceLevels == null)
priceLevels = defaultPriceLevels;
else
priceLevels = newPriceLevels;
}
}
【问题讨论】:
-
使用重载
-
为什么你的
priceLevels属性没有设置器? -
@S.Akbari 你可能是对的。但是,如果想法是只允许在初始化时设置
priceLevels(因此默认值作为后备),那么它是有效的。
标签: c# class optional-parameters