想象以下示例:
class foobar
{
string b = string.Empty;
public foobar(string abc)
{
b = abc;
}
public override string ToString()
{
return b;
}
}
我可以这样使用它:
void Main()
{
foobar test = new foobar("test string");
Console.WriteLine(test);
}
随着预期的输出test string
如果我做这样的事情怎么办?
void Main()
{
object test2 = (object)new foobar("test string 2");
Console.WriteLine (test2);
}
test string 2
即使我将我的类装箱在对象内,我仍然得到输出。
当我使用方法返回的对象时,它甚至可以工作:
private object DoSomething()
{
return (object) new foobar("test3..");
}
CLR 如何知道我的对象是哪种类型以及在哪里寻找 .ToString() 实现?
这在跨装配边界使用时是否有效?