我最近遇到一个问题,我在WinRT项目中无法使用可选参数。
有没有其他选择?我甚至尝试过[optional]关键字。不起作用。
答案 0 :(得分:0)
在Windows运行时组件项目中,公共函数不能具有可选参数,只有私有函数才能拥有它们。
但是如果将该项目转换为类库,即使是公共函数,也可以使用可选参数。
答案 1 :(得分:0)
另一种可能的方法:使用覆盖的签名。
public void TheFunction (string param1, string param2)
{
[...] //processing stuff
}
public void TheFunction (string param1)
{
return TheFunction(param1, String.Empty);
}
答案 2 :(得分:-1)
以下内容无法编译:
void PrintStuffOptional(string stuff, [Optional] int num)
{
Console.WriteLine(stuff + ": " + num.ToString());
}
导致:
找不到类型或命名空间名称'Optional'(您是否缺少using指令或程序集引用?)
和/或:
找不到类型或命名空间名称'OptionalAttribute'(您是否缺少using指令或程序集引用?)
在文件顶部添加using System.Runtime.InteropServices;
可以解决这些问题。但是,从C#4.0开始,您可以声明可选参数,如下所示:
void PrintStuff(string stuff, int num = 0)
{
Console.WriteLine(stuff + ": " + num.ToString());
}
如果调用方法没有为num
参数提供值,则它将使用默认值0
。因此,void PrintStuff()
将同时发挥作用:
PrintStuff("a string to print");
PrintStuff("a string to print", 37239);