Почему я не могу использовать абстрактные статические методы в 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

2022-11-18T08:16:36+00:00
Вопросы с похожей тематикой, как у вопроса:

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