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!
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.
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.
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)
{
}
}
}