使用可选参数的方法有哪些更好的方法:
我很抱歉图片而不是代码,但WYSIWYG编辑器是错误的。
答案 0 :(得分:2)
正如其他人已经指出的那样,对所产生的IL没有任何影响。
我想就使用默认参数提出切入点:
因为它们已编译到软件中,所以在发布软件后更改它们可能会导致错误。您可以使用不同的默认值来使用不同的软件组件。
使用特殊的“默认值”指标要好得多(如果可以的话)。然后在方法内部检测此类特殊值并替换相应的默认值。这样,您可以更可靠地更改未来版本中的默认值。
例如,对于CreateApple()示例,您可以执行以下操作:
static Apple CreateApple(string size = "<<default>>", string colour = "<<default>>")
{
if (size == "<<default>>")
size = "Big";
if (colour == "<<default>>")
colour = "Red";
我认为在这种情况下你应该使用枚举 - 但同样仍然适用于枚举和其他类型。只要您的值不属于该参数的有效正常范围,就可以使用它来表示“默认”。
答案 1 :(得分:1)
这实际上是个人偏好的问题。两者基本相同。
然而, const
在许多情况下可能具有优势。如果您在代码中的多个位置使用该值,我宁愿使用const
声明而不是指定内联,因为您不重复该值,并且它使检查更简单(并且可能稍后更改) ),因为它保存在一个地方。
答案 2 :(得分:-1)
可以在班级中放置默认值 它具有在课堂上强制执行的好处 读课的任何人都很明显。
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);