C#屏蔽基类成员

可以用与积累成员名称相同的成员来屏蔽

要让编译器知道你在故意屏蔽继承的成员,可以用new修饰符。否则程序可以成功编译,但是编译器会警告你隐藏了一个继承的成员

cs 复制代码
using System;

class someClass
{
    public string F1 = "Someclass F1";
    public void M1(string f)
    {
        Console.WriteLine($"someclass M1:{f}");
    }
}
class otherClass:someClass
{
    public string F1 = "otherClass F1";
    public void M1(string f)
    {
        Console.WriteLine($"otherClass M1:{f}");
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        otherClass o = new otherClass();
        o.M1(o.F1);
    }
}

使用new:

cs 复制代码
using System;

class someClass
{
    public string F1 = "Someclass F1";
    public void M1(string f)
    {
        Console.WriteLine($"someclass M1:{f}");
    }
}
class otherClass:someClass
{
    new public string F1 = "otherClass F1";
    new public void M1(string f)
    {
        Console.WriteLine($"otherClass M1:{f}");
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        otherClass o = new otherClass();
        o.M1(o.F1);
    }
}

结果:

cs 复制代码
otherClass M1:otherClass F1
相关推荐
q__y__L3 小时前
C#线程同步(三)线程安全
安全·性能优化·c#
程序设计实验室4 小时前
纯 C#实现+AOT 打造的多功能图片处理工具 ImageGlider
c#·aot
Yang-Never5 小时前
Kotlin -> 普通Lambda vs 挂起Lambda
android·开发语言·kotlin·android studio
遗憾皆是温柔6 小时前
3.JVM,JRE和JDK的关系是什么
java·开发语言·jvm·面试
奔波霸的伶俐虫9 小时前
jeecg框架@Dict不生效问题
开发语言·python
YY_TJJ10 小时前
8.4 Java Web(Maven P50-P57)
java·开发语言·maven
pusue_the_sun11 小时前
从零开始搞定类与对象(中)
开发语言·c++·学习
BuHuaX11 小时前
Unity_数据持久化_IXmlSerializable接口
xml·unity·c#·游戏引擎·游戏策划
咕噜咕噜啦啦11 小时前
Qt按键响应
开发语言·qt