我有一个处理字符串输入的函数。
public string Foo(string text)
{
// do stuff with text and
// return processed string
}
我在很多地方都调用了这个,我将 guid 转换为这样的字符串:
string returnValue = Foo(bar.ToString());
我真正想要的是接受任何可以转换为字符串的对象类型作为输入。所以我尝试修改函数如下:
public string Foo(IFormattable text)
{
var textAsString = text.ToString();
// do stuff with textAsString
// and return processed string
}
这意味着我所有的调用都更简单:
string returnValue = Foo(bar);
它适用于所有具有 .ToString 方法的对象类型;除了字符串:)
如果我尝试将字符串传递给函数,则会收到以下编译错误:
Argument type 'string' is not assignable to parameter type 'System.IFormattable'
这看起来很奇怪,因为 String 有一个 ToString() 方法。
为什么这不起作用?