Max*_*kov 17 c# overloading operator-keyword
好的,我知道这是不可能的,但这是制定问题标题的最佳方式.问题是,我正在尝试使用我自己的自定义类而不是浮点数(用于确定性模拟),我希望语法尽可能接近.所以,我当然希望能够写出类似的东西
FixedPoint myNumber = 0.5f;
Run Code Online (Sandbox Code Playgroud)
可能吗?
fer*_*ero 33
是的,通过为FixedPoint此类编写的隐式类型转换运算符创建.
class FixedPoint
{
public static implicit operator FixedPoint(double d)
{
return new FixedPoint(d);
}
}
Run Code Online (Sandbox Code Playgroud)
如果读者/编码器对a double可以转换为不明显FixedPoint,您也可以使用显式类型转换.然后你必须写:
FixedPoint fp = (FixedPoint) 3.5;
Run Code Online (Sandbox Code Playgroud)
重载implicit演员:
class FixedPoint
{
private readonly float _floatField;
public FixedPoint(float field)
{
_floatField = field;
}
public static implicit operator FixedPoint(float f)
{
return new FixedPoint(f);
}
public static implicit operator float(FixedPoint fp)
{
return fp._floatField;
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以使用:
FixedPoint fp = 1;
float f = fp;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |