Wenn ich eine ushort-Variable habe, die 0xFFAA ist und ich werde das mit 8 Bits verschieben, werde ich eine ganze Zahl bekommen, nicht eine vorzeichenlose Abkürzung, warum? Hier ist ein Bild, das Sie mehr klar zu machen, was ich meine:Linke Verschiebung auf einem vorzeichenlosen Kurzschluss ohne Überlauf in eine ganze Zahl
Gibt es einen Weg aus dieser links verschieben, um eine 16-Bit-Variable zu erhalten, ohne die int in einen unsigned short zu Gießen?
Vielleicht hat es etwas mit UINT zu tun, die nicht Teil des Wesens CLS? 'Der Typ UInt16 ist nicht CLS-kompatibel. Der alternative CLS-Typ ist Int32. Int16 kann stattdessen verwendet werden, um einen UInt16-Wert zu ersetzen, der von Null bis MaxValue reicht. Weitere Informationen zur CLS-Kompatibilität finden Sie unter Allgemeine Sprachspezifikation. –
'test' ist hier kein Muss; es ist ein 'int'. 'var' Typisierung mit ganzzahligen Konstanten ergibt immer' int'. Auch ohne C# 's Regeln für Typ-Promotion im Schichtbetrieb gibt es keinen Grund, eine 'ushort' zu erwarten. – user5090812
Das gleiche passiert, wenn ich ushort anstelle von var verwende. – user3149497