WinRT和可选参数发行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinRT和可选参数发行相关的知识,希望对你有一定的参考价值。

我最近遇到了一个问题,在WinRT项目中,我的功能中没有可选参数。

还有其他替代方法吗?我什至尝试了[optional]关键字。不起作用。

答案

在Windows运行时组件项目中,公共功能不能具有可选参数,只有私有功能可以具有它们。

但是如果您将该项目转换为类库,即使对于公共功能,也可以具有可选参数。

另一答案

另一种可能的方法:使用替代签名。

public void TheFunction (string param1, string param2)
{
  [...] //processing stuff
}

public void TheFunction (string param1)
{
   return TheFunction(param1, String.Empty);
}
另一答案

以下内容将无法编译:

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);

以上是关于WinRT和可选参数发行的主要内容,如果未能解决你的问题,请参考以下文章

C# 4 中的重载分辨率和可选参数

命名参数和可选参数,以及 WCF

ApiControllerAttribute 和可选参数

通用方法和可选参数

存储可选管道多行字符串和可选参数的批处理脚本

Javascript 函数和可选参数