12-12面向对象--引用类型与值类型、命名空间与类库

五、引用类型与值类型

.NET将变量的类型分为值类型引用类型。例如int和float之类的变量属于值类型,而“类“类型的变量属于引用类型

值类型与引用类型的变量在使用上是有区别的。

值类型的变量在一定义之后就可以马上使用。

引用类型的变量定义之后,还必须用new关键字创建对象后才可以使用。

如上图,创建两个新的对象时,直接比较两个对象是否相等,返回的bool值为false.因为两个对象都是新开辟的一个空间变量,彼此没有任何关系,所有是不相等的。

如图2:1)创建的第一个新的对象ss1,给ss1中的属性分别赋值;再创建第二个新的对象ss2,直接比较ss1和ss2,仍然不相等;

2)但是,当执行”ss2=ss1“时,把对象ss2指向ss1,就把ss1的值赋给ss2,这时候比较时,返回的是true;

3)当打印ss2.Name,输出就是ss1.Name的值;

4)再次给ss2.Name赋值时,输出是ss1.Name的值;

六、命名空间与类库

1、命名空间:又称程序集,相当于一个文件夹,里面包含好多的类(文件)。

2、类库:许许多多的类组合在一起,就相当于好多文件组成一个压缩包。

七、继承

在构成继承关系的两个类中,一个被称为父类或基类,另一个被称为子类。如下图:

【重点理解】:1)子类包含弗雷德所有属性和方法;

                    2)所有的子类都可以直接转换成父类类型;

                    3)当父类类型变量里面存的是某个子类的对象的时候,才能转换成那个子类类型。

举例说明:

【例1】:1)创建一个Ren类的对象,其字段属性包含Name,Sex;(运用封装字段)方法为“会说话!”

2)创建一个Men类的对象作为Ren类的子类,其字段属性继承Ren类的属性Name,Sex,方法为“会赚钱”;

3)在主函数中,如何体现父类与子类的继承关系;通过强制转换,子类对象转换为父类,然后再从父类转换成子类时的属性不会缺失(必须在某个子类存在其父类当中的前提下);

【注意】:一个父类可以包含多个子类;但一个子类只能对应一个父类;父类与子类可以理解为一对多的关系。

时间: 2024-08-07 21:17:15

12-12面向对象--引用类型与值类型、命名空间与类库的相关文章

1212面向对象--引用类型与值类型、命名空间与类库、继承(父类与子类)

五.引用类型与值类型 .NET将变量的类型分为值类型与引用类型.例如int和float之类的变量属于值类型,而“类“类型的变量属于引用类型. 值类型与引用类型的变量在使用上是有区别的. 值类型的变量在一定义之后就可以马上使用. 引用类型的变量定义之后,还必须用new关键字创建对象后才可以使用. 如上图,创建两个新的对象时,直接比较两个对象是否相等,返回的bool值为false.因为两个对象都是新开辟的一个空间变量,彼此没有任何关系,所有是不相等的. 如图2:1)创建的第一个新的对象ss1,给ss

.NET 基础 一步步 一幕幕[面向对象之堆、栈、引用类型、值类型]

堆.栈.引用类型.值类型 内存分为堆和栈(PS:还有一种是静态存储区域 [内存分为这三种]),值类型的数据存储在栈中,引用类型的数据存储在堆中. 堆.栈: 堆和栈的区别: 栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义:局部值类型变量.值类型参数等都在栈内存中. 堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小. 引用类型.值类型 1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值.引用类型变量的赋值只复制对对象的引用,而不复

05 基元类型、引用类型和值类型

基元类型 书上一开头就说了一个概念 编译器直接支持的数据类型称为基元类型(primitive type). 以下是基元类型. C# Primitive Typ FCL Type CLS-Compliant sbyte System.SBte NO byte System.Byte YES short System.Int16 YES ushort System.UInt16 NO int System.Int32 YES uint System.UInt32 NO long System.Int

【转】c#引用类型与值类型的区别大盘点

解析:CLR支持两种类型:值类型和引用类型.用Jeffrey Richter(<CLR via C#>作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能问题”.这就要求我们正确理解和使用值类型和引用类型. 值类型包括C#的基本类型(用关键字int.char.float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型):而引用类型包括类(用class关键字声明的类型)和委托(用delegate关键字声明的特殊类).C#中的每

JavaScript引用类型和值类型

thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.45;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr&g

第5章 基元类型、引用类型和值类型

5.1编程语言的基元类型 编译器(Compiler)直接支持的数据类型称为基元类型(primitive type). 我希望编译器根本不要提供基元类型名称,强制开发人员使用FCL(Framework类库)类型名称: 许多开发人员都困惑于到底应该使用string还是String.由于C#的string直接映射到System.String,所以两者是没有区别的.int始终映射到System.Int32,所以不管在什么操作系统上运行,代表的都是32位整数. 5.2引用类型和值类型 虽然FCL中大多数类

第183天:引用类型和值类型

一.内存分配 1.数值型内存分配 1 <script> 2 var num1; //这个时候不进行内存分配 3 var num3=9;//分配内存 4 var num4=num3;//会不会分配 5 6 // 这里到底分配还是不分配内存?? 7 // 答案 --分配内存 彼此拥有独立的内存空间,互不影响 8 console.log(num3); 9 console.log(num4); 10 11 num3=3333333; 12 num4=4444444; 13 console.log(nu

CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

编程语言的基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1; 等价于: int a = 1; 这种语法不仅增强了代码的可读性,其生成的IL代码与使用System.Int32时生成的IL代码是完全一致的. 编译器直接支持的数据类型称为基元类型(primitive type).基元类型直接映射到Framework类库(FCL)中存在的类型.如C#中,int直接映射

C#引用类型和值类型的区别

1***.C#中有两种类型: 值类型和引用类型: 值类型的变量直接包含他们的数据,而引用类型的变量存储 引用类型存储对他们的数据的引用,后者称为对象: 简单说:值类型直接存储其值,引用类型存储对值得引用.引用类型分为引用和引用的对象. 2***. 值类型:简单类型.枚举.结构 引用类型: 类类型.接口类型.数组类型和委托类型 3***.值类型与引用类型的内存存储 单纯的说值类型存储在栈上,引用类型存储在托管堆上是不对的. 4***.区别: 1. 托管堆: 同步块和方法表, x,y,托管堆上的需要