繁体   English   中英

C#隐式运算符和ToString()

[英]C# Implicit operators and ToString()

我正在创建自己的类型来表示css值(例如像素,例如12px)。 为了能够添加/减去/乘以/ ...我的类型和整数我已经在int中定义了两个隐式运算符。 一切都很好,除了一件事..如果我写:

CssUnitBase c1 = 10;
Console.WriteLine(c1);

我得到“10”而不是“10px” - 使用隐式转换为int而不是ToString()方法。 我怎么能防止这种情况?

是的,有一个隐式转换为intWriteLine(int)的重载比WriteLine(object)更具体,所以它会使用它。

您可以显式调用WriteLine(object)重载:

Console.WriteLine((object)c1);

...或者您可以自己调用ToString ,以便调用Console.WriteLine(string)

Console.WriteLine(c1.ToString());

...或者你可以删除隐式转换为int 它对你有多大用处? 我一般不主张对这样的事情隐式转换的...(你可以保持隐式转换,从 int当然,如果你真的想。)

重写“ToString()”方法并使用c1.ToString()。

只需覆盖CssUnitBaseToString方法,并在需要时将其作为字符串调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM