2013-07-05 25 views
1

C#中是否有可选项?VB中的“可选”在C#中相当于#

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ") 

你将如何在C#中实现上述代码?我见过optionalstroptionalint但其他数据类型和自定义对象呢?

+1

在这里经常被描述为例如:http://stackoverflow.com/questions/199761/how-can-you-use-optional-parameters-in-c – thmshd

+0

'通知(字符串公司,字符串办公室=“QJZ “)'<='办公室'是可选的,如果你等于它的常量。 – Corak

+0

完整参考:http://msdn.microsoft.com/en-us/library/dd264739.aspx – thmshd

回答

7

你必须给该参数的默认值,并且必须在最后(最后一个参数)。

public void Test(string param1, string optional = "") { 

} 

把它放到上下文:

public void Notify(string company, string office = "QJZ") { 

} 

http://msdn.microsoft.com/en-us/library/dd264739.aspx

0

试试这个

void notify(string company ,string office ="QJZ"){} 
1

删除单词optional,然后它会使用默认值。只要你使用的是> = VS2010 见here有类似的问题here

2
public void MyMethod(string company, string office = "QJZ") 
{ 

} 

记住可选参数要来末的签名,如果你有另一个同名的方法没有使用任何可选参数,编译器会默认选择其他方法,并且不会使用可选参数1。例如,如果你也有

public void MyMethod(string company) 
{ 
} 

,你叫

MyMethod("company name"); 

,编译器会自动使用MyMethod(string company)超载。