C#基础加强

 

 

 

1.值类型的引用类型

a)         值类型:它的间接父类或者直接父类是ValueType

b)        引用类型:它的间接或者直接父类没有ValueType

c)         值和引用类型在内存中的地址分配

d)        值和引用类型做为参数传递时的特点

e)         注意事项:

                        i.              值类型的顶级父类是object,但是中间某一个类型是ValueType.但是引用类型的直接或者父类中没有ValueType.

                      ii.              值类型为什么没有派生类:是因为值类型在内存中直接存储 

      iii.      参数传递的本质

1.都是传递栈空间中存储的内容做副本传递

2.值类型在栈空间里面存储存储  值 

3.引用类型存储是堆的引用地址

4.值类型做为参数传递不会影响原始的实参值

5.引用类型的形参值的修改会影响原始的实参值 

6.添加ref/out,传递就是栈空间所分配的地址

7.ref并没有重新开辟空间。

8.如果参数仅仅是refout不一样,就不能构成重载

9.ref做为参数传递需要传递一个已经存在的已经赋值的实参值,而out不需要。但是在out参数传递的时候,在方法体中必须重新赋值。

10.如果单纯的需要方法返回一个用户预先不知道的值,那么可以使用out,如果是需要将用户的原始值做修改之后再提供给用户使用,那么就使用ref

 

2.面向对象的概念

a)         什么是面向对象:一种思考方式,采用最合理的方式实现需求

b)        什么是类。类是用来描述现实对象的,是抽象的概念,是模型

c)         如何从现实对象中抽象出类,如何确定类所需要描述的特征和行为

                        i.              任何一个现实对象都可以从特征和行为两个方面进行描述

                      ii.              根据具体的业务需求描述出现实对象中特征和行为

d)        什么是对象:具体的存在

e)         类和对象的区别:

f)         使用代码创建类

g)        如何理解类是一种数据类型,如何使用

                        i.              创建一个类的对象需要开辟存储空间

                      ii.              得到一个对象就可以得到这个对象的所有成员,可以使用其中的公共成员。

h)        类的实例化:new

i)          类的访问修饰符:

j)          使用过程中的注意事项:

                        i.              创建类的对象的时候为什么可以开辟内存空间:因为类的成员的默认值

                      ii.              如果类的成员的字符串类型那么空间如何开辟:字符串类型的成员只需要存储一个指向字符串拘留池中的引用,这个空间大小是固定的。

                    iii.              类的成员的默认访问修饰符是private,说明只有在当前类中可以使用,在类的外部不能使用

                     iv.              类的默认访问修饰符是internal,说明当前程序集中可以使用。

2.       封装:什么是封装,封装的概念:

a)         我们学习过那些封装

                        i.              属性封装

                      ii.              方法封装

                    iii.              类的封装

                     iv.              程序集的封装:

4.属性

a)         类的成员字段使用public修饰的问题:造成类的外部可以自由使用这个字段,有可能造成值不合理,也起不到保护字段的作用。

b)        如何创建方法实现赋值的合理性

a)         创建get方法获取数据

b)        创建set方法进行字段的赋值

c)         使用属性简化赋值合理化的过程

d)        什么是属性:

a)         属性封装是一个结构,一个包含了两个方法的结构

b)        属性是用来保护字段的,外部的操作最终操作的是字段而不是属性

e)         属性封装中的getset访问器的作用

a)         Get:获取数据

b)        Set:赋值

f)         如何设置属性的只读和只写属性:创建对应的get或者set访问器

g)        允许外部访问的变量需要声明为属性

h)        使用时注意事项:

a)         set的时候,Value是系统自动传递的参数,就相当于用户赋的值。

b)        在做逻辑验证的时候是判断Value的值,而不是字段或者属性的值

c)         在属性是操作的是字段,而不再是属性,否则就会造成递归抛出异常。

d)        属性的类型的作用是1.确定返回值的类型 2.确定value的类型

e)         给属性赋值本质就是    调用方法,传递参数

5.构造函数

a)         使用对象.属性赋值的缺点及使用对象初始化器赋值的缺点

b)        什么是构造函数:在创建对象的同时进行对象的成员的赋值

c)         构造函数的作用:为对象的属性赋值

d)        构造函数是一个特殊的方法

                        i.              构造函数的名称与类名一样

                      ii.              构造函数没有返回值

                    iii.              构造函数也是一个方法,可以拥有参数,也可以实现重载

e)         构造函数不能显式的调用,只能在类的实例化及当前类其它构造函数this调用及子类调用父类base的构造函数

f)         每一个类都会有一个无参的构造函数,如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。

g)        构造函数调用时类似于方法,满足一一对应的原则

h)        同一个类中的构造函数相互调用

i)          使用注意事项:

                        i.              每一个类都会默认提供一个无参的构造函数(隐藏),但是如果手动添加了构造函数,那么无参的构造函数就会消失。所以一般情况下建议创建好类之后手动添加无参构造函数

                      ii.              构造函数不能显式的调用,只有在创建对象的时候和构造函数相互调用的时候才可以使用。

                    iii.              类的其它成员的名称不能与类名一致,除了构造函数和析构函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值