是否存在需要使用扩展对象的默认值的扩展方法的情况?

时间:2012-10-17 07:29:11

标签: c#

是否存在需要使用扩展对象的默认值的扩展方法的情况?

例如,

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

3 个答案:

答案 0 :(得分:2)

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

  

无法为'this'参数指定默认值

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

   return name;
}

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