.net 4 string []参数默认值设置

Omu*_*Omu 3 .net c# .net-4.0

我想这样做:

public int Insert(object o, string[] ignore = new string[] {"Id"})
Run Code Online (Sandbox Code Playgroud)

但它告诉我,我不能这样做?为什么会这样 ?

Chr*_*lor 9

问题是默认参数必须是常量.在这里,您将动态分配一个数组.与声明const变量一样,对于引用类型,仅支持字符串文字和空值.

您可以使用以下模式实现此目的

public int Insert(object o, string[] ignore = null)
{
  if (ignore == null) ignore = new string[] { "Id" };
  ...
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,当调用者在调用站点排除参数时,编译器将传递null您可以根据需要处理的值.注意jsut保持简单我已经修改了函数中参数的值,通常不被认为是好的做法,但我相信在这种情况下这可能没问题.


Bri*_*sen 6

引用类型唯一可用的缺省值是null(除了字符串也接受文字),因为它必须在编译时可用.