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
相关推荐
是苏浙6 小时前
零基础入门C语言之贪吃蛇的实现
c语言·开发语言·数据结构
化作星辰6 小时前
java 给鉴权kafka2.7(sasl)发送消息权限异常处理
java·大数据·开发语言·kafka
无极小卒6 小时前
如何在三维空间中生成任意方向的矩形内部点位坐标
开发语言·算法·c#
克里斯蒂亚诺更新6 小时前
微信小程序 点击某个marker改变其大小
开发语言·前端·javascript
Alberta ゙8 小时前
C++初阶
开发语言·c++
the白勺8 小时前
RabbitMQ-基础-总结
开发语言·c#
Dev7z8 小时前
基于Matlab多目标粒子群优化的无人机三维路径规划与避障研究
开发语言·matlab·无人机
沐知全栈开发9 小时前
HTML 脚本:基础、应用与未来趋势
开发语言
@菜菜_达9 小时前
interact.js 前端拖拽插件
开发语言·前端·javascript
专注VB编程开发20年9 小时前
C#VB.NET中实现可靠的文件监控(新建、删除、改名、内容修改等事件的准确捕获)
spring·c#·.net·文件监控