Compilerwarnung (Stufe 3) CS0675

Ein bitweiser ODER-Operator wird für einen signaturerweiterten Operanden verwendet. Sie sollten zuerst in einen kleineren unsignierten Typ konvertieren.

Der Compiler hat eine Variable implizit erweitert und signaturerweitert und den sich daraus ergebenden Wert in einer bitweisen ODER-Operation verwendet. Dies kann zu unerwartetem Verhalten führen.

Im folgenden Beispiel wird CS0675 generiert:

// CS0675.cs  
// compile with: /W:3  
using System;  
  
public class sign  
{  
   public static void Main()  
   {  
      int hi = 1;  
      int lo = -1;  
      long value = (((long)hi) << 32) | lo;              // CS0675, value contains -1 (0xffffffff_ffffffff)
      // try the following line instead  
      // long value = (((long)hi) << 32) | ((uint)lo);   // correct, value contains 8589934591 (0x00000001_ffffffff)
   }  
}