WinRT和可选参数发行

问题描述 投票:0回答:3

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

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

c# windows-runtime windows-phone-8.1
3个回答
1
投票

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

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


0
投票

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

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

public void TheFunction (string param1)
{
   return TheFunction(param1, String.Empty);
}

-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);
© www.soinside.com 2019 - 2024. All rights reserved.