C# 的一些问题操作 Ⅱ

发表于: 2/12/2023

言尽于行

C Sharp

Static method hiding

Inheritance

省流:在C#中静态成员是相同类型共有的,即,派生类型与基类型公用同一个静态成员。

例如

class Base{
    static int data = 0;
}
class A : Base{}

修改Base.data后,访问A.data也会获得修改后的值。 很trivial对不对?

The Non-trivials

class Base<K, V>{
    static Dictionary<K, V> data;

    static void Save(){
        // ... save data to somewhere
    }
    static void Load(){
        // ... load data from somewhere
    }
}

class SomeDataType: Base<int, SomeDataType>{
    static Dictionary<..> otherNewData;

    new static void Save(){
        Base<int, SomeDataType>.Save();

        // ... save new data to somewhere
    }
    new static void Load(){
        Base<int, SomeDataType>.Load();

        // ... load new data from somewhere
    }
}

上述代码得以正常运作。 虽然细想一下就可以明白,不过初次遇见还是有些被迷惑住。