Compilerfehler CS0233

Aktualisiert: November 2007

Fehlermeldung

"Bezeichner" hat keine vordefinierte Größe, daher kann "sizeof" nur in einem ungeschützten Kontext verwendet werden. (Benutzen Sie 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. Wenn Sie diese Fehlermeldung erhalten, prüfen Sie, ob die Größe des Bezeichners zur Kompilierzeit bestimmt werden kann. Wenn das nicht der Fall ist, verwenden Sie SizeOf an Stelle von sizeof.

Beispiel

Im folgenden Beispiel wird CS0233 generiert:

// 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));
   }
}