1. Jak mogę ponownie zinterpretować rzutowanie zmiennoprzecinkowe na int (lub podwójne na długie)?Jak ponownie zinterpretować rzutowanie float na int? Czy istnieje niestatyczny operator konwersji lub operator przypisania przypisany przez użytkownika do konwersji na "to"?
float f = 2.0f;
int i = (int)f; // causes conversion
Chcę tylko, aby skopiować-bitowy wzorzec z f
do i
. Jak to zrobić?
2. niejawne i jawnych operatorów C# wykorzystuje jeden pośredni obiektu, ponieważ funkcja operator statyczne
public static implicit operator MyClass(double s)
{
return new MyClass(s);
}
..
..
MyClass m = 2.2; // this code uses 'm' and one intermediate object.
Jest to dobre w przypadku grup odniesienia, ale wartość typów, które są duże (powiedzmy 20- 30 bajtów), spowoduje to niepotrzebne kopiowanie danych. Czy moje zrozumienie jest poprawne? A jeśli tak, to dlaczego C# nie ma operatora konwersji statycznej lub operatora przypisania zdefiniowanego przez użytkownika, tak aby konwersja/przypisanie odbywało się w "tym"? Jeśli tak, to w jaki sposób to zrobić?
W przyszłości proszę umieszczać dwa odrębne pytania. –
i nie pisz całego tekstu w nagłówku. – shoosh