返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中new操作符的工作机制
  • 425
分享到

C#中new操作符的工作机制

2024-04-02 19:04:59 425人浏览 安东尼
摘要

使用new操作符来创建对象,其背后到底发生了什么? 有一个父类Animal,Dog派生于Animal。 class Program { static

使用new操作符来创建对象,其背后到底发生了什么?

有一个父类Animal,Dog派生于Animal。

    class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            Console.WriteLine("我能调用老祖宗Object的实例方法GetType,显示结果为:" + dog.GetType() );
            Console.WriteLine("我能拿到父类的属性Age=" + dog.Age);
            Console.WriteLine("我当然能拿到自己的公共字段_weight=" + dog._weight);
            
        }
    }
    public class Animal
    {
        public int Age { get; set; }
        public Animal(){}
    }
    public class Dog : Animal
    {
        public decimal _weight;
        public Dog(){}
    }

虽然创建了子类Dog的实例,但通过dog实例能调用"老祖宗"System.Object的实例方法,也能获取到父类的公共属性Age的值,并且所有的实例字段值为其类型的默认值。

new操作符做的事情大致包括:

  • 计算Dog类以及所有父类实例字段所占的字节数
  • 计算Dog类以及所有父类"类型对象指针"和"同步块索引"所占的字节数
  • 根据字节数,托管堆分配内存
  • 先调用所有父类的构造函数,最后调用Dog的构造函数。在这过程中,初始化所有实例字段,字段值为字段类型的默认值或构造函数实参值;初始化"类型对象指针"和"同步块索引"成员
  • 把新建的Dog实例的堆地址赋值给栈变量dog
  • 通过new创建的托管堆对象最终由GC回收

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对编程网的支持。如果你想了解更多相关内容请查看下面相关链接

--结束END--

本文标题: C#中new操作符的工作机制

本文链接: https://lsjlt.com/news/166167.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中new操作符的工作机制
    使用new操作符来创建对象,其背后到底发生了什么? 有一个父类Animal,Dog派生于Animal。 class Program { static ...
    99+
    2024-04-02
  • C++ new和delete操作符
    在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示:int *p = (int*) malloc( sizeof(int) * ...
    99+
    2023-06-03
  • c++中的new是关键字还是操作符
    new是c++中一个关键字,用于动态分配内存。它接收一个类型的参数,返回一个指向分配内存的指针。动态分配的内存需要使用delete关键字显式释放,防止内存泄漏。 C++中的new是关键...
    99+
    2024-04-26
    c++
  • JavaScript中new操作符的作用是什么
    这篇文章给大家介绍JavaScript中new操作符的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行为。2.JavaScrip...
    99+
    2023-06-06
  • c++中new运算符的作用
    new 运算符用于在运行时从堆中动态分配内存并创建对象,返回一个指向新创建对象的内存地址的指针,特点包括延迟对象创建、可变大小分配、在堆上分配和需要手动释放内存。 C++ 中 new ...
    99+
    2024-04-28
    c++
  • JavaScript中new操作符有什么用
    这篇文章给大家分享的是有关JavaScript中new操作符有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 js模拟new操作符的实现这个问题如果你在掘金上搜,...
    99+
    2024-04-02
  • 怎么使用JS中new操作符
    这篇文章主要讲解了“怎么使用JS中new操作符”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用JS中new操作符”吧!首先我们来看一下实例化一个对象做...
    99+
    2024-04-02
  • JS中new操作符有什么用
    这篇文章将为大家详细讲解有关JS中new操作符有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。new操作符的基本过程:1.创建一个新的空对象。2.将构造函数的作用域...
    99+
    2024-04-02
  • JavaScript中的new操作符的具体使用
    JavaScript中的new操作符是一个非常重要的概念,它可以让我们创建一个自定义的对象类型或者一个内置的对象类型,比如Array、Date、Function等。那么,new操作符...
    99+
    2023-05-18
    JavaScript new操作符 js new运算符
  • c++中new的作用
    c++ 中 new 运算符用于动态分配内存,包括:分配指定大小的内存块、创建堆内存中的对象以及返回指向分配内存块的指针,语法为 type* ptr = new type;。 C++ 中...
    99+
    2024-04-26
    c++
  • c#中new的作用
    c# 中 new 关键字用于创建类的实例,包括分配内存、调用构造函数并返回对新创建对象引用的三大操作。主要应用场景为:创建基本数据类型、创建引用类型、创建数组以及为变量分配值。 C# ...
    99+
    2024-05-15
    c#
  • 如何在JavaScript中使用new操作符
    本篇文章给大家分享的是有关如何在JavaScript中使用new操作符,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、说明(1)创建一个空对象。(2)将对象的__proto指...
    99+
    2023-06-15
  • C#中new修饰符的作用是什么
    C#中new修饰符的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C# new修饰符是起什么作用?◆C# new修饰符与 new 操作符是两个概念;◆C# new...
    99+
    2023-06-17
  • JavaScript中new操作符的原理示例详解
    new的用处 new的作用是通过构造函数来创建一个实例对象,该实例与原型和构造函数之间的关系如下图所示: 先来总结一下 创建一个空对象 空对象的内部属性 __pr...
    99+
    2024-04-02
  • 怎样操作C++操作符
    本篇文章给大家分享的是有关怎样操作C++操作符,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++中指令系统的每一条指令都有一个C++操作符,它表示该指令应进行什么性质的操作,...
    99+
    2023-06-17
  • JavaScript中new操作符的原理与实现详解
    目录一、new做了哪些事二、返回不同类型时有哪些表现三、手写new的实现原理一、new做了哪些事 先看看new的使用场景: // 1、创建一个构造函数 function Vehicl...
    99+
    2022-11-13
    JavaScript new操作符 JavaScript new
  • 如何自己实现JavaScript的new操作符
    目录构造函数new 操作符自己实现一个 new构造函数 在介绍new之前,必须要知道什么是构造函数。 构造函数和普通函数在写法上没有任何区别,当一个函数通过new Fun()调用时,...
    99+
    2024-04-02
  • C#中List<T>存放元素的工作机制
    List<T>是怎么存放元素?我们扒一段List<T>的一段源码来一窥究竟。 using System; using System.Diagnostic; u...
    99+
    2022-11-13
    C# List<T> 存放元素
  • 交换机工作原理中的操作有哪些
    这期内容当中小编将会给大家带来有关交换机工作原理中的操作有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。交换机工作原理中的操作有三种:1、丢弃,即当本端口下的主机访问已知本端口下的主机时丢弃;2、转发...
    99+
    2023-06-26
  • C#中is操作符的具体应用
    这篇文章主要讲解了“C#中is操作符的具体应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中is操作符的具体应用”吧!C# 操作符之is应用C# 操作符之is操作符用于检查运行时对象类...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作