我收到了一份样本声明:
MyClass myclass = 3;
Run Code Online (Sandbox Code Playgroud)
怎么可能使这个有效的声明?我需要包含哪些代码MyClass来支持隐式转换int?
Jon*_*eet 19
您需要一个隐式转换运算符:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,大多数时候我并不是隐性转换的忠实粉丝.偶尔它们很有用,但在将它们放入代码之前要仔细考虑.当你阅读代码时,它们会非常混乱.
在另一方面,若有所思地使用时,它们可以是令人惊讶的方便-我是从思维转换特别是string对XName和XNamespaceLINQ to XML中.
这是如何做:
public class MyClass
{
public static implicit operator MyClass(int i)
{
return new MyClass(i);
}
}
Run Code Online (Sandbox Code Playgroud)
这使用C#功能称为隐式转换运算符.
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |