【发布时间】:2017-11-15 15:37:26
【问题描述】:
有没有办法让我的新类模仿 int 或任何值类型的行为?
我想要一些东西,所以这些分配是有效的
MyClass myClass = 1;
int i = myClass;
var x = myClass; // And here is important that x is of type int!
MyClass 大致是这样的
public class MyClass {
public int Value{get;set;}
public int AnotherValue{get;set;}
public T GetSomething<T>() {..}
}
MyClass 的每个赋值都应该返回变量 Value 作为类型 int。
到目前为止,我找到了 implicit operator int 和 implicit operator MyClass (int value)。但这还不够好。
我希望 MyClass 真正表现得像一个 int。所以var i = myClass 让i 成为一个int。
这可能吗?
【问题讨论】:
-
var x = myClass; // And here is important that x is of type int!我不认为这会飞。 -
@spender,
implicit operator int? -
一个类的行为永远不会像结构°°,因为它是引用类型而不是值类型。您可以使用结构并覆盖运算符。让你的对象表现得像一个整数
-
@Sinatr 正如 OP 所讨论的,这对
var x = myClass不起作用(也不会)。 TBH,尝试这样做对我来说并没有多大意义......考虑到用例,它可以隐式转换为 int,因此可以(在大多数地方)使用而不是 int。 OP,你为什么要这样? -
@Sinatr 因为
var x = myClass,x 永远不会是myClass以外的任何类型。
标签: c# operators variable-assignment assignment-operator value-type