Ich muss folgenden Code in VS2008 .net 3.5 mit WinForms:Warum wird für die Byte-Subtraktion in C# eine Umwandlung benötigt?
byte percent = 70;
byte zero = 0;
Bitmap copy = (Bitmap)image1.Clone();
...
Color oColor = copy.GetPixel(x, y);
byte oR = (byte)(oColor.R - percent < zero ? zero : oColor.R - percent);
Als ich verlassen die „(byte)
“ von der letzten Zeile des Codes, ich einen Compiler-Fehler sagen, es „kann nicht implizit Typ umwandeln 'int
' bis 'byte
'. " Wenn alles vom Typ ist byte
und byte
ist ein Integer-Typ ... dann, warum muss ich die Besetzung haben?
Eric Lippert sagt: "Ich denke nicht an Bytes als" Zahlen "; ich denke an sie als Muster von Bits, die als Zahlen, oder Zeichen oder Farben _interpretiert werden könnten. Wenn Sie sein werden Wenn man sie mathematisch anwendet und sie als Zahlen behandelt, dann macht es Sinn, das Ergebnis in einen Datentyp zu verschieben, der häufiger als Zahl interpretiert wird. " Siehe http://stackoverflow.com/questions/941584/byte-byte-int-why-c. – Brian
Ihr habt bemerkt, dass ihr dies als Duplikat markiert habt, obwohl es * vor * dem Link "hat schon eine Antwort hier" gefragt wurde? –
Hölle, jetzt sagt es sogar "vorher gefragt", obwohl die andere Frage drei Jahre später gestellt wurde. –