我想知道是否有一种方法可以获得此代码的编译错误:
var customer = new SomeCustomerClass();
Console.WriteLine("Customer address:" + customer);
Run Code Online (Sandbox Code Playgroud)
所以我将被迫写下这样的东西:
var customer = new SomeCustomerClass();
Console.WriteLine("Customer address:" + customer.FormatAddress());
Console.WriteLine("Customer accounts:" + customer.FormatAccounts());
Run Code Online (Sandbox Code Playgroud)
如果"ToString"是一个接口,我可以在我的类中使用显式接口实现.
谢谢.
Jar*_*Par 12
在编译时无法阻止此代码. Object.ToString是每个对象的公共契约的一部分,并且没有办法阻止它在编译时被调用.在这种特殊情况下,编译器将解析+to String.Concat(object, object),并且实现最终会调用Object.ToString.没有办法改变这一点.我认为你最顺畅的前进道路是覆盖ToString并让它进入FormatAddress
请不要ToString像其他人建议的那样改变抛出异常.大多数.Net都希望ToString存在并且不会抛出.更改它会对程序产生许多意外的负面影响(包括终止这些对象的调试体验)
您可以在客户类中覆盖ToString,如果需要,可以在其中调用FormatAddress方法.
public override string ToString()
{
return FormatAddress();
}
Run Code Online (Sandbox Code Playgroud)