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:可能对你有帮助。