2

有没有一种情况,我们需要有一个扩展方法,其中一个对象的默认值是被扩展的?

例如,

public static class util
{
  public static string Foo(this string name="Hello world")
  {
     return name;
  }
}
4

3 回答 3

2

我不确定是否会出现这种情况,但你不能那样做。你会得到一个错误:

无法为“this”参数指定默认值

于 2012-10-17T07:31:25.277 回答
1

这不会编译 - 您不能为this参数指定默认值。

即使你可以,它会让你做的只是调用util.Foo()并让它按照默认值行事——我想这可能会派上用场。

于 2012-10-17T07:31:46.183 回答
1

您可以使用以下代码获得相同的结果:

public static string Foo(this string name)
{
   if (String.IsNullOrWhiteSpace(name))
       return "Hello world";

   return name;
}

我相信在某些情况下您可以应用它。例如,当您将可为空的价格转换为字符串时。

于 2012-10-17T07:50:36.960 回答