Ответ 1
Вам нужно поместить определение метода в определение класса/структуры. Определения методов не могут отображаться вне этих.
Я получаю сообщение об ошибке при попытке использовать следующую статическую функцию.
Ошибка:
Ожидаемый класс, делегат, перечисление, интерфейс или структура
Функция (и класс):
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).
Изменить: скобка неверно соответствует некоторому прокомментированному коду - приведенный выше код работает правильно, мой фактический неверный код не сделал. Спасибо!
Вам нужно поместить определение метода в определение класса/структуры. Определения методов не могут отображаться вне этих.
В С#/есть капитал S String.NET - System.String
. Но это не ваша проблема. @Femaref получил это правильно - эта ошибка указывает, что ваш метод не является частью класса.
С# не поддерживает автономные функции, такие как С++. Все методы должны быть объявлены внутри тела определения класса, интерфейса или структуры.
Я столкнулся с этой проблемой при повторном ознакомлении с 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)
{
}
}
}