C# 是否存在这样一种情况,即我们需要有一个扩展方法,该方法具有被扩展对象的默认值?

C# 是否存在这样一种情况,即我们需要有一个扩展方法,该方法具有被扩展对象的默认值?,c#,C#,是否存在这样一种情况,即我们需要有一个扩展方法,该方法具有被扩展对象的默认值 比如说, public static class util { public static string Foo(this string name="Hello world") { return name; } } 我不确定是否会出现这种情况,但你不能这样做。您将得到一个错误: 无法为“this”参数指定默认值 我不确定是否会出现这种情况,但你不能这样做。您将得到一个错误: 无法为“this”参

是否存在这样一种情况,即我们需要有一个扩展方法,该方法具有被扩展对象的默认值

比如说,

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

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

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


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

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


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


即使可以,它也只允许您调用
util.Foo()
,并使其作用于默认值—我想这可能会很方便。

这不会编译—您不能为
参数指定默认值


即使可以,它也只允许您调用
util.Foo()
,并使其作用于默认值—我想这可能会很方便。

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

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

   return name;
}

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

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

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

   return name;
}

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

由于在调用扩展方法时必须指定对象(在扩展语法中,而不仅仅是在其静态类中调用该方法)…@Damien\u从技术上讲,您不必这样做。您可以使用
util.Foo(“bar”)
@Guillaume-因此括号中的位-我试图区分调用
a.Foo()
util.Foo(a)
-但回忆不起前者的技术术语。我选择了“扩展语法”。只是想知道你用的是日文名,我不知道如何在评论中提到你?@CuongLe:可能对你有帮助。因为你在调用扩展方法时必须指定一个对象(在扩展语法中,而不仅仅是在静态类中调用该方法)…@Damien_,你不必这么做。您可以使用
util.Foo(“bar”)
@Guillaume-因此括号中的位-我试图区分调用
a.Foo()
util.Foo(a)
-但回忆不起前者的技术术语。我用的是“扩展语法”。只是想知道你用的是日本名字,我不知道怎么在评论中提到你?@CuongLe:可能对你有帮助。