Tag: 显式转换

为什么不能在C#中共存相同类型的隐式和显式运算符?

为什么不能在同一个类中共存两个相同类型的运算符(显式和隐式)? 假设我有以下内容: public class Fahrenheit { public float Degrees { get; set; } public Fahrenheit(float degrees) { Degrees = degrees; } public static explicit operator Celsius(Fahrenheit f) { return new Celsius(ToCelsius(f.Degrees)); } public static implicit operator Celsius(Fahrenheit f) { return new Celsius(ToCelsius(f.Degrees)); } } public class Celsius { public float Degrees { get; set; } […]

如何从reflection中执行显式操作转换?

我想使用reflection,并使用reflection进行隐式或显式转换。 鉴于我已经用这种方式定义了Foo public class Foo { public static explicit operator decimal(Foo foo) { return foo.Value; } public static explicit operator Foo(decimal number) { return new Foo(number); } public Foo() { } public Foo(decimal number) { Value = number; } public decimal Value { get; set; } public override string ToString() { return Value.ToString(); } } […]

无法隐式转换类型’decimal?’ 到’十进制’。

sdr是我的sqldatareader,我想检查一个十进制类型的curPrice值是否为null。 inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7); 这是我收到的错误消息: 无法隐式转换类型’decimal?’ 到’十进制’。 存在显式转换(您是否错过了演员?) 哪里出错了,请有人告诉我。

我应该何时在C#中定义(显式或隐式)转换运算符?

C#的一个鲜为人知的特性是可以创建隐式或显式的用户定义类型转换 。 我已经写了6年的C#代码了,我从来没有用过它。 所以,我担心我可能错过了好机会。 什么是用户定义转换的合法,良好用途? 您是否有比仅定义自定义方法更好的示例? – 事实certificate,微软有一些关于转换的设计指南 ,其中最相关的是: 如果最终用户未明确预期此类转换,请勿提供转换运算符。 但什么时候转换“预期”? 在玩具编号课程之外,我无法弄清楚任何真实世界的用例。 以下是答案中提供的示例摘要: 弧度/度/双 极地/的Point2D 开尔文/华氏/摄氏度 模式似乎是:隐式转换大多数(仅?)在定义数值/值类型时很有用,转换由公式定义。 回想起来,这很明显。 不过,我想知道非数字类是否也可以从隐式转换中受益..?