我正在使用C#.net 3.5来构建应用程序.我一直在使用.net 4.0中的可选参数属性,没有任何问题.我注意到在3.5中有选项(解决方法)将以下属性添加到您的方法中,如下所示:
    public static void MethodName(string name, [Optional][DefaultValue(null)]string placeHolder)
    {
    }
即使我已经将属性添加到方法中,如果我尝试这样调用它:
     MethodName("test");
编译器会抱怨它正在寻找两个参数而不是一个参数.实际上是否可以使用C#.net 3.5执行此操作?难道我做错了什么?
rot*_*man 35
可选参数是C#4.0语言功能,因此无论您使用哪个框架都无关紧要,但必须使用VS 2010或更新版本进行编译.
在VS 2010或更高版本中使用此语法:
public static void MethodName(string name, string placeHolder = null)
{
    // body
}
或者在旧版本中:
public static void MethodName(string name, string placeHolder)
{
    // body
}
public static void MethodName(string name)
{
    MethodName(name, null);
}
该Optional属性自C#1.0起可用,并且在与外部代码进行互操作时使用,它对您自己的代码中的方法调用没有影响.
由于C#3中没有可选参数,您可以使用重载:
public static void MethodName(string name, string placeHolder) {
  ...
}
public static void MethodName(string name) {
  MethodName(name, null);
}
(旁注:没有C#3.5版,这是一个框架版本.)