在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
封装: 官方定义: 封装又称信息隐藏,是指利用抽象数据类型(自定义类UserInfo)将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系。
两种体现: 1.把方法和属性封装到类中 2.将私有字段封装成共有属性
封装的优点: 第一:代码重用; 第二:不必关心具体的实现; (方法) 第三:面向对象三大特征之一; 第四,具有安全性!
数组: int [] num={1,2} num:当中保存的是内存中的地址如:0X001 nums[0]:访问的是堆中的内容 下面是一幅引用类型的内存原理图供参考(下面图片会引发部分人不适,请在家长陪同下观看,说白了就是画的丑): 再献上一副数组赋值原理图(只是将栈上的内容赋值一份):
结构体: 01.结构体不用new,就可以直接对其属性赋值 02.结构体中可以有字段,属性和方法 03.结构体是值类型,类是引用类型 04.在结构体中不能给字段赋初值,但是类中可以. 05.结构体中没有默认构造函数,但类中有默认构造函数
1.如果被struct修饰,那么他就是结构体 2.结构体是一种数据类型,并且他是值类型(枚举也是值类型) 3.有两种特殊的值类型:枚举和结构体 4.当类中属性个数比较少的时候,定义成结构体 public struct Dog { } 给大家分析一下引用类型和值类型: 引用类型:栈和堆都开空间 1.string 2.数组 3.接口 4.用户自定义类
值类型:只在栈开空间 1.int 2.double 3.boolean 4.结构体 5.枚举
所有数据类型的父亲都是Object 所有的值类型直接的父亲是ValueType,爷爷是Object
构造函数: 默认如果定义了一个类,系统会自动的生成一个和该类名称相同,并且没有返回值类型,甚至连Void都没有的方法,该方法就称为构造函数! 1.方法没有返回值,连void都没有 2.方法名和类名相同 构造作用:初始化变量用的 public class Dog { public string Name { get; set; } public int Age { get; set; } public Dog(string name, int age) { this.Name = name; this.Age = age; } } class Program { static void Main(string[] args) { Cat cat; cat.name="小白"; cat.Say(); Console.ReadLine(); Dog dog = new Dog("大黄", 15); } }
装箱和拆箱: 箱子是引用类型,将值类型值装进引用类型变量里就称为装箱 装箱:将值类型(栈)转换成引用类型(栈堆)
拆箱:从引用类型(栈堆)转换成值类型(栈) 什么时候应该装箱,什么时候应该拆箱? 解析:由于装箱和拆箱过程都要损耗系统的性能,所以在开发中应该尽量避免装箱和拆箱。
面试题: int number=3; 值类型的直接父类:ValueType,ValueType的父亲是Object 结论:没有装箱
7.值类型传递和引用类型传递:值传递和引用传递的区别:有没有ref关键字,有ref是引用传递 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //Cat cat; 6 //cat.name="小白"; 7 //cat.Say(); 8 //Console.ReadLine(); 9 10 //Dog dog = new Dog("大黄", 15); 11 12 13 int num1 = 1; 14 int num2 = 2; 15 Console.WriteLine("num1="+num1+",num2="+num2); 16 17 //方法调用 18 Change(ref num1, ref num2); 19 20 Console.WriteLine("num1=" + num1 + ",num2=" + num2); 21 Console.ReadLine(); 22 23 } 24 25 //方法定义 26 private static void Change(ref int num1, ref int num2) 27 { 28 int temp = num1; 29 num1 = num2; 30 num2 = temp; 31 } 32 } 收工!
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论