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

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

Ошибка:

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

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

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 для возврата строки или строкового объекта? В C # не существует класса String (заглавная S).

Редактировать : Несоответствие скобок с некоторым закомментированным кодом - приведенный выше код работает правильно, мой действительный несовпадающий код - нет. Спасибо!

Ответы [ 3 ]

24 голосов
/ 28 января 2011

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

4 голосов
/ 28 января 2011

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

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

0 голосов
/ 28 апреля 2017

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

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...