Errore del compilatore CS0233

Aggiornamento: novembre 2007

Messaggio di errore

'identificatore' non ha una dimensione predefinita, quindi sizeof può essere usato solo in un contesto di tipo unsafe (si consiglia di utilizzare 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)

L'operatore sizeof può essere utilizzato solo per i tipi a cui viene assegnato un valore costante in fase di compilazione. Se viene visualizzato questo errore, accertarsi che la dimensione dell'identificatore possa essere determinata in fase di compilazione. Se questo non è possibile, utilizzare SizeOf, anziché sizeof.

Esempio

Il seguente codice di esempio genera l'errore 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));
   }
}