Ошибка" ожидаемый класс, делегат, перечисление, интерфейс или структура " в общедоступной статической строке MyFunc(). Что такое альтернатива "string"?

я получаю сообщение об ошибке при попытке использовать следующую статическую функцию.

ошибка:

ожидается, класс, делегат, перечисление, интерфейс или структура

3 ответов


вам нужно поместить определение метода в определение класса/структуры. Определения методов не могут отображаться вне них.


в C#/.Net - System.String. Но это не ваша проблема. @Femaref правильно понял-эта ошибка указывает на то, что ваш метод не является частью класса.

C# не поддерживает автономные функции, как это делает C++. Все методы должны быть объявлены в теле класса, интерфейса или определения структуры.


я столкнулся с этой проблемой при повторном знакомстве с P-Invoke. Femaref было правильно. Вот пример кода для быстрой визуализации:

Рабочий Код:

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)
        {

        }
    }
}

Сломанный Код:

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)
        {

        }
    }
}