Почему я не могу вызвать публичный метод в другом классе?
У меня эти два класса взаимодействуют, и я пытаюсь вызвать четыре разных класса из класса один для использования в классе два.
Способы являются общедоступными, и они возвращают значения, но по какой-то причине соединение не производится.
Ошибка, которую я получаю при попытке: "An object reference is required for the nonstatic field, method, or property 'GradeBook.[method I want called]'"
У меня все инициализировано. Я не хочу создавать методы как статические. Я снова прочитал специфика моего задания, и я даже не должен был, но я не могу заставить это работать, так или иначе, я говорю это.
myGradeBook. [Способ]
GraceBook. [Способ]
Все это создает ошибки.
Текущие ошибки:
The best overloaded method match or 'System.Console.WriteLine(string, object)' has some invalid arguments.
Arugment '2': cannot convert from 'method group' to 'object'
Я даже не знаю, что это значит....
EDIT:
Я просто исправил эту проблему благодаря функции Step Into в Visual Studio.
Я не знаю, почему мне так долго понадобилось его использовать.
Ответы
Ответ 1
Вы пытаетесь вызвать метод экземпляра для класса. Чтобы вызвать метод экземпляра для класса, вы должны создать экземпляр для вызова метода. Если вы хотите вызвать метод для не-экземпляров, добавьте ключевое слово static. Например
class Example {
public static string NonInstanceMethod() {
return "static";
}
public string InstanceMethod() {
return "non-static";
}
}
static void SomeMethod() {
Console.WriteLine(Example.NonInstanceMethod());
Console.WriteLine(Example.InstanceMethod()); // Does not compile
Example v1 = new Example();
Console.WriteLine(v1.InstanceMethod());
}
Ответ 2
Похоже, вы не создаете свой класс. Это основная причина, по которой я получаю ошибку "ссылка на объект".
MyClass myClass = new MyClass();
После того, как вы добавили эту строку, вы можете вызвать свой метод
myClass.myMethod();
Кроме того, все ваши классы в одном пространстве имен? Когда я впервые изучил С#, это было для меня обычным делом.
Ответ 3
Вам нужно создать переменную типа этого класса и сначала установить ее как новый экземпляр объекта.
GradeBook myGradeBook = new GradeBook();
Затем вызовите метод только что созданного объекта.
myGradeBook.[method you want called]
Ответ 4
Например, 1 и 2 вам необходимо создать статические методы:
public static string InstanceMethod() {return "Hello World";}
Тогда для примера 3 вам нужен экземпляр вашего объекта для вызова метода:
object o = new object();
string s = o.InstanceMethod();