C# · 12月 28, 2021

两个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如果是这样,怎么办?

谢谢

解决方法 > 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优化,从而可能无需复制.