加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net-4.0 – C#4.0:方法参数默认值为数组

发布时间:2020-12-15 06:32:59 所属栏目:百科 来源:网络整理
导读:是否有可能在C#4.0方法中将默认值参数作为数组(对于ex.string [] sArray)? 如果是的话,如何实施呢? 我试过如下调用函数: MethodA(string[] legends=new string[]{"a","b"},float[] values=new float[]{1,2},string alt="sd"); 这不行 解决方法 正如其他人
是否有可能在C#4.0方法中将默认值参数作为数组(对于ex.string [] sArray)?
如果是的话,如何实施呢?

我试过如下调用函数:

MethodA(string[] legends=new string[]{"a","b"},float[] values=new float[]{1,2},string alt="sd");

这不行

解决方法

正如其他人所说,默认值不能是数组.但是,避免这种情况的一种方法是将默认值设为null,然后在必要时初始化数组:
public void Foo(int[] x = null)
{
    x = x ?? new int[] { 5,10 };
}

或者,如果您不打算改变数组或将其暴露给调用者:

private static readonly int[] FooDefault = new int[] { 5,10 };
public void Foo(int[] x = null)
{
    x = x ?? FooDefault;
}

请注意,这假定null不是您因任何其他原因而想要使用的值.它不是一个全局适用的想法,但在某些情况下,它无法将默认值表示为编译时常量.对于像Encoding.UTF8这样的东西,你可以使用相同的东西作为默认编码.

如果你想要一个值类型参数,你可以把它作为一个可空的参数.例如,假设您希望将参数默认为处理器的数量(显然不是编译时常量),您可以这样做:

public void RunInParallel(int? cores = null)
{
    int realCores = cores ?? Environment.ProcessorCount;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读