Compilerfehler CS0233Compiler Error CS0233

„identifier“ weist keine vordefinierte Größe auf, weshalb „sizeof“ nur in einem ungeschützten Kontext verwendet werden kann (verwenden Sie ggf. System.Runtime.InteropServices.Marshal.SizeOf).'identifier' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf)

Der Operator sizeof kann nur für Typen verwendet werden, die Kompilierzeitkonstanten sind.The sizeof operator can only be used for types that are compile-time constants. Wenn Sie diesen Fehler erhalten, achten Sie darauf, dass die Größe des Bezeichners zur Kompilierzeit bestimmt werden kann.If you are getting this error, make sure that the size of the identifier can be determined at compile time. Wenn dies nicht der Fall ist, verwenden Sie SizeOf statt sizeof.If it cannot, then use SizeOf instead of sizeof.

BeispielExample

Im folgenden Beispiel wird der Fehler CS0233 generiert:The following example generates CS0233:

// CS0233.cs  
using System;  
using System.Runtime.InteropServices;  

[StructLayout(LayoutKind.Sequential)]  
public struct S  
{  
    public int a;  
}  

public class MyClass  
{  
    public static void Main()  
    {  
        S myS = new S();  
        Console.WriteLine(sizeof(S));   // CS0233  
        // Try the following line instead:  
        // Console.WriteLine(Marshal.SizeOf(myS));  
   }  
}