【发布时间】:2010-09-29 15:32:17
【问题描述】:
使用如下隐式运算符有什么问题吗:
//linqpad c# program example
void Main()
{
var testObject = new MyClass<int>() { Value = 1 };
var add = 10 + testObject; //implicit conversion to int here
add.Dump(); // 11
}
class MyClass<T>
{
public T Value { get; set; }
public static implicit operator T (MyClass<T> myClassToConvert)
{
return myClassToConvert.Value;
}
}
我在想我可以通过这种方式将对象的实例视为值类型,但鉴于我从未见过这样的示例,我想也许有一个理由不这样做有人可以指出这样的事情吗?
在我的实际代码中,我正在考虑将其作为数据抽象层的一部分,以便我可以返回带有描述底层数据的信息的对象,但允许逻辑代码在需要时将其视为值类型要知道的是值,同时使用泛型保持良好和类型安全。
【问题讨论】:
标签: c# generics implicit-conversion