Erreur du compilateur CS0233

« identifier » n’a pas de taille prédéfinie ; c’est pourquoi sizeof ne peut être utilisé que dans un contexte unsafe

Sans contexte unsafe, l’opérateur sizeof ne peut être utilisé que pour les types dont la taille est une constante au moment de la compilation. Si vous obtenez cette erreur, utilisez un contexte unsafe.

L’exemple suivant génère l’erreur 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 instead:  
        // unsafe
        // {
        //     Console.WriteLine(sizeof(S));
        // }
   }  
}