在C#中我们可以像C++一样执行以下操作吗?
public void myMethod(int i, MyClass obj, int value=100){
}
Run Code Online (Sandbox Code Playgroud)
另一个问题是MyClass是一个引用类型,如果ref之前没有它,它会将MyClass的副本传递给方法而不是引用?
谢谢,
其他人已经正确回答了可选参数部分:您可以为C#4中的参数指定默认值.(有各种限制,例如必须参数必须在可选参数之前,默认值必须是编译时常量.)
<gratuitous plug>有关详细信息,请参阅深度中的C#,第2版,第13章</gratuitous plug>
对于"参数传递"方面 - 默认情况下所有参数都按值传递,但在引用类型的情况下,参数是引用,而不是对象.调用者可以看到对象的更改,但如果您更改参数本身以引用其他对象,则调用者将无法看到该更改.(它不会更改调用者变量的值.)有关详细信息,请参阅有关参数传递的文章.