有没有一种情况,我们需要有一个扩展方法,其中一个对象的默认值是被扩展的?
例如,
public static class util
{
public static string Foo(this string name="Hello world")
{
return name;
}
}
有没有一种情况,我们需要有一个扩展方法,其中一个对象的默认值是被扩展的?
例如,
public static class util
{
public static string Foo(this string name="Hello world")
{
return name;
}
}
我不确定是否会出现这种情况,但你不能那样做。你会得到一个错误:
无法为“this”参数指定默认值
这不会编译 - 您不能为this
参数指定默认值。
即使你可以,它会让你做的只是调用util.Foo()
并让它按照默认值行事——我想这可能会派上用场。
您可以使用以下代码获得相同的结果:
public static string Foo(this string name)
{
if (String.IsNullOrWhiteSpace(name))
return "Hello world";
return name;
}
我相信在某些情况下您可以应用它。例如,当您将可为空的价格转换为字符串时。