 
                        在C#中,阴影(shadowing)和重写(override)是两种不同的概念,分别用于处理字段和方法。下面详细解释它们的区别,并提供示例源代码。
阴影是指在派生类中声明一个与基类中的成员(通常是字段)同名的新成员,从而隐藏基类的成员。阴影使用new关键字进行声明。
class BaseClass
{
    public string Name = "Base Class";
}
class DerivedClass : BaseClass
{
    public new string Name = "Derived Class";
}
class Program
{
    static void Main()
    {
        DerivedClass derivedObj = new DerivedClass();
        Console.WriteLine(derivedObj.Name); // 输出:Derived Class
        Console.WriteLine(((BaseClass)derivedObj).Name); // 输出:Base Class
    }
}
在上述例子中,DerivedClass中的Name字段阴影了BaseClass中的同名字段。
重写是指在派生类中重新实现基类中的虚拟或抽象方法。使用override关键字进行声明。
class BaseClass
{
    public virtual void Display()
    {
        Console.WriteLine("Base Class");
    }
}
class DerivedClass : BaseClass
{
    public override void Display()
    {
        Console.WriteLine("Derived Class");
    }
}
class Program
{
    static void Main()
    {
        DerivedClass derivedObj = new DerivedClass();
        derivedObj.Display(); // 输出:Derived Class
    }
}
在上述例子中,DerivedClass中的Display方法重写了BaseClass中的同名虚拟方法。
用途:
关键字:
new关键字。override关键字。影响继承链:
在实际应用中,应根据情况选择阴影或重写,确保理解它们的用途和影响。