两个C#问题;我怎么能重新解释一个浮点数到int? C#是否具有非静态转换运算符或用户定义的赋值运算符,以便转换在“this”上进行?

前端之家收集整理的这篇文章主要介绍了两个C#问题;我怎么能重新解释一个浮点数到int? C#是否具有非静态转换运算符或用户定义的赋值运算符,以便转换在“this”上进行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1.
我如何重新诠释一个浮动到一个int(或一个双倍到一个长)?
float f = 2.0f;
int i = (int)f; // causes conversion

我只想将位模式从f复制到i.如何才能做到这一点?

2.
C#中的隐式和显式运算符使用一个中间对象,因为运算符函数是’static’

public static implicit operator MyClass(double s)
{
    return new MyClass(s);
} 
..
..
MyClass m = 2.2; // this code uses 'm' and one intermediate object.

X- 20045 X- 200 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 X- 200 200我的理解正确吗?新新200的X- 200新新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新新200新新200新新200新新200新Version旗新新旗新新200如果是这样,怎么办?

谢谢

@H_404_16@

解决方法

> BitConverter类可以检索任何原始类型的字节,然后您可以使用它们来创建一个int.另一个选项是 Buffer.BlockCopy,如果你有大量的转换做.
float ff = 2.0f;
int ii = BitConverter.ToInt32(BitConverter.GetBytes(ff),0);

float[] ff = new float[...];
int[] ii = new int[ff.Length];
Buffer.BlockCopy(ff,ii,ff.Length * 4); // byte-wise copy of ff into ii

> C#中没有任何其他选项,但是,我认为虽然在正确的情况下,将会有一个副本,但任何足够简单的实现都将完成JIT优化,从而可能无需复制.

@H_404_16@ @H_404_16@

猜你在找的C#相关文章