当前位置: 首页 > article >正文

C#里怎么样使用new修饰符来让类智能选择基类函数还是派生类函数?

C#里怎么样使用new修饰符来让类智能选择基类函数还是派生类函数?


在C#里有一个特殊的用法,就是在创建与基类相同的函数时,
如果使用一个new修饰符,就会导致它会根据变量的类型而选择不同的函数运行。
这是一个比较特殊的使用方法,一般情况下,不建议这样使用。
除非有特殊的领域。

使用例子演示如下:
 

/*
 *  C# Program to Demonstrate New modifier
 */
using System;
 
class TEST
{
    public void func()
    {
        Console.WriteLine("TEST.func");
    }
}
 
class TEST1 : TEST
{
    public new void func()
    {
        Console.WriteLine("TEST1.func");
    }
}
 
class Program
{
    static void Main()
    {
        TEST ref1 = new TEST(); 
        TEST ref2 = new TEST1();
        TEST1 ref3 = new TEST1();
 
        ref1.func();
        ref2.func();
        ref3.func();
        Console.Read();
    }
}

输出如下:

Enter a Number : 25
TEST.func
TEST.func
TEST1.func

在这里特别要注意

TEST ref2 = new TEST1();

这行代码的运行输出。


http://www.kler.cn/a/417148.html

相关文章:

  • Node.js:开发和生产之间的区别
  • 【Java基础面试题001】Java中序列化和反序列化是什么?
  • 如何使用 Chrome 无痕浏览模式访问网站?
  • docker-mysql
  • 《Java 对象池技术:性能优化的利器》
  • 【Web】0基础学Web—html基本骨架、语义化标签、非语义化标签、列表、表格、表单
  • 基于一致性理论的三机并联独立微网二次控制MATLAB仿真模型
  • vue3使用monaco编辑器(VSCode网页版)
  • 计算机网络性能
  • vim编辑器的一些配置和快捷键
  • 操作无法完成,因为其中的文件夹或文件已在另一程序中打开 请关闭该文件夹或文件,然后重试。>>怎么删除被打开的文件
  • 算法技巧及模板总结
  • 第四十二篇 EfficientNet:重新思考卷积神经网络的模型缩放
  • Web开发基础学习——通过React示例学习模态对话框
  • 力扣第 77 题 组合
  • Python中的六种“国际数字格式”实施方式
  • 解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题
  • 存储服务器一般做是做什么阵列?详细列举一下
  • Spring boot之BeanDefinition介绍
  • 在Java中使用Apache POI导入导出Excel(一)
  • TensorBoard中的add_image()和add_scalar()
  • Pandas 操作Excel
  • duxapp 2024-11-29 更新 新增 UI 组件功能
  • iQOO Neo10系列携三大蓝科技亮相,性能与续航全面升级
  • 知行合一:实践中的技术分享与学习
  • PostgreSQL WAL日志膨胀处理