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
相关推荐
SomeOtherTime7 小时前
Rust所有权(AI回答)
开发语言·后端·rust
Easyhood7 小时前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose
白杨尚青8 小时前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
饮水桶_T12 小时前
JAVA IO流笔记
开发语言·数据结构·算法
Felven14 小时前
C. Brr Brrr Patapim
c语言·开发语言
路溪非溪15 小时前
python标准库使用总结
开发语言·python
SomeOtherTime17 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
zh_xuan17 小时前
kotlin常见面试题
开发语言·kotlin·面试题
草莓熊Lotso19 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
huaqianzkh20 小时前
WinForm C#:循环修改控件UI闪烁卡顿?SuspendLayout / ResumeLayout 与 BeginUpdate 优化
开发语言·ui·c#