Почему я не могу вызвать публичный метод в другом классе?

У меня эти два класса взаимодействуют, и я пытаюсь вызвать четыре разных класса из класса один для использования в классе два.

Способы являются общедоступными, и они возвращают значения, но по какой-то причине соединение не производится. Ошибка, которую я получаю при попытке: "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();