是否有可能在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; }
原文地址:https://www.jb51.cc/csharp/95306.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。