public class ClassA
{
public static readonly string processName;
}
public class ClassB : ClassA
{
static ClassB()
{
processName = "MyProcess.exe";
}
}
Otrzymuję błąd podczas kompilowania powyższego kodu C#.Przypisywanie do statycznego pola tylko do odczytu w klasie bazowej
Błąd mówi - „statycznego pola tylko do odczytu nie można przypisać (oprócz statycznego konstruktora lub zmiennym inicjatora)”
Ale ja przypisaniem go w statycznym konstruktorze.
Potrzebą takiej statycznej zmiennej jest to, że klasa podstawowa ma metody, które używają tej zmiennej, ale klasy pochodne i klasa bazowa muszą mieć różne wartości dla tej zmiennej. Ale wartość jest stała we wszystkich instancjach danej klasy. Musi być tylko do odczytu, ponieważ nigdzie nie można go zmienić.
Jaki jest błąd w powyższym kodzie? (Jeśli są jakieś), wydaje mi się, że nie jestem w stanie go rozpoznać. Komunikat o błędzie nie pomaga. Ponieważ nie robię nic złego zgodnie z tym.
Jeśli wystąpi błąd, w jaki sposób mogę zaimplementować tę funkcję? Wiem, że prostym rozwiązaniem byłoby uczynienie go zmienną instancji i przypisanie im różnych wartości w klasach pochodnych. Nie jest to jednak konieczne, ponieważ wartość jest stała we wszystkich instancjach danej klasy.
Dokładnie! "Polimorfizm nad typem". Nie sądzę, żeby mogło być lepiej sformułowane. Dzięki za wskazanie, że nie jest on obsługiwany w .NET. – Poulo