1. Как я могу переинтерпретировать приведение float к int (или двойному к длинному)?
float f = 2.0f;
int i = (int)f; // causes conversion
Я хочу только скопировать бит-шаблон из f
в i
. Как это можно сделать?
2. Неявные и явные операторы в С# используют один промежуточный объект, потому что операционная функция статична
public static implicit operator MyClass(double s)
{
return new MyClass(s);
}
..
..
MyClass m = 2.2; // this code uses 'm' and one intermediate object.
Это подходит для ссылочных типов, но для больших значений (например, 20-30 байтов) это приведет к ненужной копии данных. Правильно ли я понимаю? И если да, то почему у С# нет оператора нестатического преобразования или пользовательского оператора присваивания, чтобы преобразование/присвоение выполнялось на 'this'? Если да, то как это сделать?