2011-06-03 6 views
-1

Je réalise que nous ne pouvons pas avoir d'indexeurs statiques en C#. Mais pourquoi le code ci-dessous compile-t-il correctement (sous C# 4.0)?L'indexeur statique C# ne doit pas être compilé, mais

Puisque Fred est une classe statique, elle ne peut même pas être instanciée. L'indexeur statique déclaré n'a aucun sens mais le compilateur le permet. Pourquoi? Je ne peux pas imaginer que c'est un bug de compilateur aussi tard dans la langue.

public static class Fred { 
    public static int this[String str] { 
    get { 
     if (str != null) 
     return str.Length; 

     return -1; 
    } 
    } 
} 
+0

Ne pas compiler pour moi dans 4.0 . –

+1

"'Fred.this [chaîne]': ne peut pas déclarer les indexeurs dans une classe statique" et "Le modificateur 'static' n'est pas valide pour cet élément". – sisve

Répondre

1

Ceci ne compile pas. Lors de la compilation, les rapports Visual Studio 2 erreurs, CS0106 et CS0720:

C: \ chemin \ \ Program.cs (5,23): erreur CS0106: n'est pas valide 'statique' Le modificateur pour ce produit C: \ Path \ à \ Program \ Program.cs (5,23): erreur CS0720: 'Fred.this [chaîne]': ne peut pas déclarer les indexeurs dans une classe statique

+0

Je sais !! SORRY !! –

+0

@Tom: C'est bon - ça arrive parfois;) –

Questions connexes