web-dev-qa-db-fra.com

Erreur "Classe, délégué, énumération, interface ou structure attendue" sur la chaîne statique publique MyFunc (). Quelle est une alternative à "chaîne"?

Je reçois une erreur lorsque j'essaie d'utiliser la fonction statique suivante.

Erreur:

Classe, délégué, énumération, interface ou structure attendue

Fonction (et classe):

namespace MyNamespace
{
    public class MyClass
    {
        // Some other static methods that use Classes, delegates, enums, interfaces, or structs

        public static string MyFunc(string myVar){
            string myText = myVar;
            //Do some stuff with myText and myVar
            return myText;
        }
    } 
}

Cela provoque le compilateur à souligner en colère (en rouge) la partie chaîne de public static string.

Donc, je suppose que cela signifie que string n'est pas une classe, un délégué, une énumération, une interface ou une structure.

Que puis-je utiliser à la place de string pour renvoyer une chaîne ou un objet de type chaîne? Il ne semble pas y avoir de classe String (S majuscule) en C #.

Éditer : Bracket ne correspond pas à un code commenté - le code ci-dessus fonctionne correctement, mon code actuel ne correspond pas. Merci!

12
Peach

Vous devez placer la définition de la méthode dans une définition de classe/struct. Les définitions de méthodes ne peuvent pas apparaître en dehors de celles-ci.

24
Femaref

Il existe une chaîne S capitale en C # /. Net - System.String . Mais ce n'est pas ton problème. @Femaref a eu raison - cette erreur indique que votre méthode ne fait pas partie d'une classe.

C # ne prend pas en charge les fonctions autonomes, contrairement à C++. Toutes les méthodes doivent être déclarées dans le corps d'une définition de classe, d'interface ou de structure.

4
Franci Penov

J'ai rencontré ce problème lorsque je me suis familiarisé de nouveau avec P-Invoke. Femaref avait raison. Voici quelques exemples de code permettant une visualisation rapide:

Code de travail:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices; 

namespace ConsoleApplication2
{
    class Program
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr GetModuleHandle(string lpModuleName);

        static void Main(string[] args)
        {

        }
    }
}

Code cassé:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr GetModuleHandle(string lpModuleName);

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

        }
    }
}
0
kayleeFrye_onDeck