我收到了一份样本声明:
MyClass myclass = 3;
如何才能将此作为有效声明?我需要在MyClass
中包含哪些代码才能支持int
的隐式转换?
答案 0 :(得分:19)
您需要implicit conversion operator:
public class MyClass
{
private readonly int value;
public MyClass(int value)
{
this.value = value;
}
public static implicit operator MyClass(int value)
{
return new MyClass(value);
}
}
就我个人而言,大部分时间我并不是隐性转换的忠实粉丝。偶尔它们很有用,但在将它们放入代码之前要仔细考虑。当你阅读代码时,它们会非常混乱。
另一方面,在仔细使用时,它们可以非常方便 - 我特别考虑从LINQ到XML的string
到XName
和XNamespace
的转换。 / p>
答案 1 :(得分:6)
以下是:
public class MyClass
{
public static implicit operator MyClass(int i)
{
return new MyClass(i);
}
}
这使用名为implicit conversion operator的C#功能。
答案 2 :(得分:0)
如果MyClass
具有int
的隐式转化,则可能会发生。
答案 3 :(得分:0)
只需实施implicit转换运算符。
答案 4 :(得分:-1)
您需要重载隐式构造函数运算符:
public static implicit operator MyClass (int rhs)
{
MyClass c = new MyClass (rhs);
return c;
}