Sae*_*ati 9 c# formatting extension-methods
问题很简单.我们如何在C#中格式化字符串?这条路:
string.Format("string goes here with placeholders like {0} {1}", firstName, lastName);
Run Code Online (Sandbox Code Playgroud)
现在,有可能创建一个扩展方法来这样做吗?
"string goes here {0} {1}".Format(firstName, lastName);
Run Code Online (Sandbox Code Playgroud)
就这样.
Fré*_*idi 14
嗯,它比看起来更复杂.其他人说这是可能的,我不怀疑它们,但Mono似乎并非如此.
在那里,方法的标准重载Format()似乎优先于名称解析过程,并且编译失败,因为静态方法最终在对象实例上被调用,这是非法的.
鉴于此代码:
public static class Extensions
{
public static string Format(this string str, params object[] args)
{
return String.Format(str, args);
}
}
class Program
{
public static void Main()
{
Console.WriteLine("string goes here {0} {1}".Format("foo", "bar"));
}
}
Run Code Online (Sandbox Code Playgroud)
Mono编译器(mcs 2.10.2.0)回复:
foo.cs(15,54):错误CS0176:无法使用实例引用访问静态成员`string.Format(string,object)',而是使用类型名称来限定它
当然,如果没有命名扩展方法,上面的编译干净Format(),但实际上你可能想要使用该名称.如果是这种情况,那么它是不可能的,或者至少不是.NET平台的所有实现.
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |