Почему я не могу использовать абстрактные статические методы в C#?
Статические методы нельзя c-sharp наследовать или переопределять, поэтому .net-framework они не могут быть абстрактными. Поскольку visual-c# статические методы определены .net-framework для типа, а не для экземпляра dotnet класса, они должны вызываться c#.net явно для этого типа. Поэтому, когда csharp вы хотите вызвать метод дочернего .cs-file класса, вам нужно использовать c-sharp его имя для его вызова. Это c#-language делает наследование неактуальным.
Предположим, вы .net можете на мгновение наследовать dotnet статические методы. Представьте dot-net себе такой сценарий:
public static class Base
{
public static virtual int GetNumber() { return 5; }
}
public static class Child1 : Base
{
public static override int GetNumber() { return 1; }
}
public static class Child2 : Base
{
public static override int GetNumber() { return 2; }
}
Если visual-c# вы вызовете Base.GetNumber(), какой language-design метод будет вызван? Какое language-design значение возвращено? Довольно dot-net легко увидеть, что без создания language-design экземпляров объектов наследование .net довольно сложно. Абстрактные csharp методы без наследования — это c-sharp просто методы, у которых dotnet нет тела, поэтому их нельзя c#.net вызвать.
c#
.net
language-design
Почему я не могу использовать абстрактные статические методы в C#?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.