![](/img/trans.png)
[英]What is the difference between overriding ToString and using implicit/explicit conversion operators in C#?
[英]C# Implicit operators and ToString()
我正在创建自己的类型来表示css值(例如像素,例如12px)。 为了能够添加/减去/乘以/ ...我的类型和整数我已经在int中定义了两个隐式运算符。 一切都很好,除了一件事..如果我写:
CssUnitBase c1 = 10;
Console.WriteLine(c1);
我得到“10”而不是“10px” - 使用隐式转换为int而不是ToString()方法。 我怎么能防止这种情况?
是的,有一个隐式转换为int
, WriteLine(int)
的重载比WriteLine(object)
更具体,所以它会使用它。
您可以显式调用WriteLine(object)
重载:
Console.WriteLine((object)c1);
...或者您可以自己调用ToString
,以便调用Console.WriteLine(string)
:
Console.WriteLine(c1.ToString());
...或者你可以删除隐式转换为int
。 它对你有多大用处? 我一般不主张对这样的事情隐式转换的...(你可以保持隐式转换,从 int
当然,如果你真的想。)
重写“ToString()”方法并使用c1.ToString()。
只需覆盖CssUnitBase
的ToString
方法,并在需要时将其作为字符串调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.