对于具有可选参数的方法,更好的方法是什么:
- 声明常量并将其用作默认参数:
- 或者在方法中声明默认参数:
对于图像而不是代码,我很抱歉,但所见即所得的编辑器有问题。
对于具有可选参数的方法,更好的方法是什么:
对于图像而不是代码,我很抱歉,但所见即所得的编辑器有问题。
正如其他人已经指出的那样,这对产生的 IL 没有任何影响。
我想就使用默认参数提出一个切线点:
因为它们被编译到软件中,所以在发布软件后更改它们可能会导致错误。您可以使用不同的默认设置来使用不同的软件组件。
使用特殊的“默认值”指标会更好(如果可以的话)。然后在方法内部,您检测这些特殊值并替换适当的默认值。这样,您可以更可靠地更改未来版本中的默认值。
例如,对于您的 CreateApple() 示例,您可以执行以下操作:
static Apple CreateApple(string size = "<<default>>", string colour = "<<default>>")
{
if (size == "<<default>>")
size = "Big";
if (colour == "<<default>>")
colour = "Red";
我认为在这种情况下你应该使用枚举——但同样适用于枚举和其他类型。只要您的值不属于该参数的有效正常范围,您就可以使用它来表示“默认”。
这真的是个人喜好问题。两者将基本相同。
const
然而,在许多情况下可能具有优势。如果您在代码中的多个位置使用该值,我更喜欢const
声明而不是指定内联,因为您不会重复该值,并且它使检查变得更简单(并且可能在以后更改),因为它被保留在一个地方。
可以在类中放置默认值。
它有在课堂上强制执行的好处。
对任何阅读课程的人来说都是显而易见的。
public class Apple
{
private string size = "big";
private string color = "red";
public string Size { get { return size; } set { size = value; } }
public string Color { get { return color; } set { color = value; } }
public Apple()
{ } // for private as default
public Apple(string Size, string Color)
{ size = Size; color = Color; } // if you don't want the private defaults
}
如果您想要一个的默认值而不是另一个的默认值
Apple apple = new Apple("small", (new Apple()).Color);