Member 11149766 Ответов: 1

Вызов метода с помощью обработчика событий на языке Си#


Мне нужно вызвать метод, не создавая объект.

Что я уже пробовал:

У меня есть два файла A1.cs и A2.cs,

класс А1
{
В этом случае я загружаю A2,после чего снова возвращаюсь к A1 .теперь страница загружается полностью.

.....
.....
Икс();

}
класс А2
{}

Теперь мое требование состоит в том, что мне нужно вызвать метод X() из A2. Без создания объекта

1 Ответов

Рейтинг:
0

OriginalGriff

Метод можно вызвать только из класса без экземпляра этого класса, если он объявлен static то есть для работы ему не нужно получать доступ к какой-либо информации на основе экземпляра.

Подумайте об автомобилях на мгновение: автомобиль имеет два свойства: цвет и количество колес. Давайте напишем быстрый метод, чтобы получить их.
Цвет автомобиля, очевидно, зависит от конкретного автомобиля, о котором вы говорите: "Моя машина" будет черной, "ваша машина" может быть синей, "эта машина" может быть зеленой сейчас и относиться к желтой машине через минуту. Таким образом GetColour требует доступа к информации на основе экземпляра:

public Color GetColour()
   {
   return this.Colour;
   }
И нам нужен экземпляр автомобиля, чтобы использовать его:
Car myCar == new Mercedes("A180", Color.Black);
Car yourCar = new BMW("6 Series", Colour.Blue);
Console.WriteLine("My car is {0}", myCar.GetColour());
Console.WriteLine("Your car is {0}", yourCar.GetColour());
Но количество колес постоянно - это всегда четыре (потому что если бы у него было два, это был бы мотоцикл!) Таким образом, нам не нужен доступ к какой-либо информации, основанной на экземплярах, и это может быть static метод:
public static int GetNumberOfWheels()
   {
   return 4;
   }
И мы используем его без экземпляра, используя имя класса в качестве префикса:
Console.WriteLine("My car has {0} wheels", Car.GetNumberOfWheels());
Console.WriteLine("Your car has {0} wheels", Car.GetNumberOfWheels());


Таким образом, при условии, что X не нуждается в доступе к какой-либо информации экземпляра, вы можете объявить его как static и назовите его через имя класса:
A2.X();
Но если его нужно использовать this вообще - явно или неявно - этого быть не может static потому что это средство доступа к информации, основанной на экземпляре.