我想知道是否有办法获得此代码的编译错误:
var customer = new SomeCustomerClass();
Console.WriteLine("Customer address:" + customer);
所以我将被迫写这样的东西:
var customer = new SomeCustomerClass();
Console.WriteLine("Customer address:" + customer.FormatAddress());
Console.WriteLine("Customer accounts:" + customer.FormatAccounts());
如果“ToString”是一个接口,我可以在我的类中使用显式接口实现来做到这一点。
Thanks.
没有办法在编译时阻止此代码。Object.ToString
是每个对象的公共契约的一部分,没有办法阻止它在编译时被调用。在这种特殊情况下,编译器将解析+
to String.Concat(object, object)
实现最终调用Object.ToString
。没有办法改变这一点。我认为你最顺利的前进道路就是超越ToString
并让它调用FormatAddress
请不要改变ToString
正如其他一些人所建议的那样抛出异常。大多数 .Net 期望ToString
存在且不可抛出。更改它会给您的程序带来许多意想不到的负面影响(包括破坏这些对象的调试体验)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)