понимание статических абстрактных методов в C#
абстрактные статические методы в C# - это функция, которая повышает любопытство среди разработчиков. Работая с поставщиками, можно столкнуться с сценарием, в котором они хотят создать абстрактный класс с абстрактным статическим методом. Изучение причин отсутствия этой функции дает более четкое понимание.
статические методы: более глубокий вид
статические методы не похожи на методы экземпляра в том, что они не требуют Объектный экземпляр, который будет доступен. Они вызываются через имя класса, а не через ссылку на объект. Код промежуточного языка (IL), сгенерированный для статических вызовов метода, непосредственно называет класс, который определяет метод, независимо от вызова класса. Иллюстрируйте это, рассмотрите следующий код:
public Class A { Общественный статический тест Void () { } } открытый класс B: { } Классовая программа { Статический void main (string [] args) { B.test (); } }. .maxstack 8 L0000: NOP L0001: Call void consoleapplication1.a :: test () L0006: NOP L0007: ret обратите внимание, что вызов сделан для A.Test, даже если исходный код использовался B.Test. Это демонстрирует, что вызов статического метода разрешается во время компиляции, основанное на классе, который определяет метод, а не в вызовом классе.
виртуальные методы и статические вызовы
public class A { public static void Test() { } } public class B : A { } class Program { static void Main(string[] args) { B.Test(); } }
virtual Методы обеспечивают полиморфное поведение, позволяя различным реализациям одного и того же метода в производных классах. Тем не менее, статические вызовы не виртуальны в .NET, поскольку они напрямую нацелены на конкретный метод, основанный на имени класса. Следовательно, виртуальные или абстрактные статические методы не будут служить практической цели в C#.
public class A { public static void Test() { } } public class B : A { } class Program { static void Main(string[] args) { B.Test(); } }Заключение
из -за того, что статические методы в C# вызываются через имена классов с Нет полиморфизма, концепция абстрактных статических методов не имеет существенного использования. Следовательно, это не поддерживается языком.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3