Konvertierung von sbyte byte
Ich habe eine variable vom Typ sbyte
und möchte um den Inhalt zu kopieren, um eine byte
. Die Umwandlung wäre keine Konvertierung, sondern ein bit pro bit Kopie.
Beispielsweise
wenn mySbyte in bits: '10101100', nach der Konvertierung, werden die entsprechenden byte-variable enthält auch die bits '10101100'.
- Warum nicht einfach werfe es
byte
? - Wird es funktionieren, ich habe irgendwo gelesen, wenn der Wert out of range, das ist negativ auf sbyte, werfen eine Ausnahme.
- Naja, nicht wirklich sagen, das ist -1, dann hätte man es als 255
- ist richtig, Sie brauchen nicht
unchecked
casting für Laufzeit-Variablen. Siehe meine Antwort für die vollständigen details.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehr über
unchecked
ist hierLassen Sie mich klarstellen, die
unchecked
business. Die MSDN-Seite besagt, dassunchecked
wird verwendet, um zu verhindern, überlauf-überprüfung, die sonst, wenn in einem checked-Kontext, geben einen compile-error oder eine exception zu werfen....WENN innerhalb eines checked-Kontext.
Rahmen wird überprüft, die entweder explizit:
oder implizit* Umgang mit compile-Zeit-Konstanten:
Aber beim Umgang mit Laufzeit Variablen, der Zusammenhang ist
unchecked
standardmäßig**:Zusammenfassung und Antwort auf die ursprüngliche Frage:
Müssen
byte<->sbyte
Umstellung auf Konstanten? Verwendenunchecked
und Darsteller:Müssen
byte<->sbyte
Umstellung auf Variablen? Nur cast:* Es gibt einen Dritten Weg, um einen Kontext überprüft standardmäßig: durch Optimierungen, die compiler-Einstellungen. E. g. Visual Studio -> Projekt-Eigenschaften -> Erstellen -> Erweitert -> [X] Check für arithmetischen überlauf/Unterlauf
** Die Laufzeit-Kontext wird deaktiviert standardmäßig in C#. In VB.NET zum Beispiel die Standard-runtime-Kontext AKTIVIERT ist.
wie diese: