Подтвердить что ты не робот

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

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

Ошибка:

Ожидаемый класс, делегат, перечисление, интерфейс или структура

Функция (и класс):

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;
        }
    } 
}

Это вызывает сердито (красным) компилятор, подчеркивая строчную часть public static string.

Итак, я предполагаю, что это означает, что string не является классом, делегатом, перечислением, интерфейсом или структурой.

Что я могу использовать вместо string для возврата строки или объекта типа string? В С# не существует класса string (capital S).

Изменить: скобка неверно соответствует некоторому прокомментированному коду - приведенный выше код работает правильно, мой фактический неверный код не сделал. Спасибо!

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

Я столкнулся с этой проблемой при повторном ознакомлении с 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)
        {

        }
    }
}