我在以下代码中使用可选参数。但是这显示错误“不允许使用默认参数说明符”任何人都帮助我先生。
public void getno(int pvalu, string pname = "")
{
}
答案 0 :(得分:25)
看起来在某些答案中有一些错误的信息:
正如其他人所说,如果您不使用C#4,或者您希望早期的C#代码消费,则重载是使用可选参数的替代方法。 (如果使用C#4构建库,但是需要调用一些C#3代码,那么就该代码而言,这些可选参数实际上是必需的。)
(顺便说一句,我会认真地重新考虑你的名字......我知道这只是示例代码,但一般来说,参数的前缀如“p”不鼓励作为惯例,同样方法通常是Pascal-套管。)
答案 1 :(得分:7)
尝试重载该方法,而不是
public void getno(int pvalu)
{
getno(pvalu, "");
}
public void getno(int pvalu, string pname)
{
}
另请参阅.Net 4 Named and Optional Arguments (C# Programming Guide)
答案 2 :(得分:2)
C#4.0中引入了可选参数 - 您使用的是哪个版本?
VB.NET总是有可选参数。
您始终可以使用重载和方法链来获得类似的功能:
public void getno(int pvalu)
{
getno(pvalue, "");
}
public void getno(int pvalu, string pname)
{
}
答案 3 :(得分:1)
您是否正在使用.NET 4编译器(例如VS 2010)进行编译,因为只有此编译器支持C#的可选参数?
我个人会重载该方法,而不是使用我正在创建的方法的可选参数,使用可选参数保留,以便在存在大量默认值的情况下使用API调用。
感谢Jon Skeet澄清了针对.NET 4和使用.NET 4编译器之间的区别。
答案 4 :(得分:0)
版本4中的C#支持可选参数,请确保使用C#4编译器将项目设置为编译。