C#3.5参数的Optional和DefaultValue

时间:2011-02-25 10:53:04

标签: c# .net .net-3.5

我正在使用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执行此操作?我做错了吗?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:6)

自{C} 1.0以来Optional属性已经可用,并且在与外部代码互操作时使用,它对您自己的代码中的方法调用没有影响。

由于C#3中没有可选参数,您可以使用重载:

public static void MethodName(string name, string placeHolder) {
  ...
}

public static void MethodName(string name) {
  MethodName(name, null);
}

(旁注:没有C#版本3.5,这是一个框架版本。)

答案 2 :(得分:4)

看看下面的StackOverflow线程: C# Optional Parameters in .net 3.5

没有使用复制粘贴已经说过的所有内容,因为该主题几乎涵盖了所有内容。 祝你好运。