c# --- 实现MyList列表

1.c#的类中不需要我们写析构函数,系统都帮我们处理好了

 

2.泛型类的构造函数可以不用带泛型参数

3.c#中类的构造函数的调用

此处我们创建一个对象 

 在进行对象定义的时候,如果圆括号中没有传参数,则会调用类中的无参构造函数

如果传了参数则会调用类中的有参构造函数

4.c#中的数组拷贝方法

 传三个参数,分别是被拷贝的数组名(源source),存储拷贝数据的数组(destination),拷贝长度(拷贝的元素个数,length) --- 该方法默认从索引 = 0的位置开始拷贝

5.如何实现数组动态大小变化 --- 需要两个数组和一个Null检测器

建立两个数组引用,把一个置为Null另一个不置为NULL,不置为NULL的存储数据,当存满的时候我们通过新容量数据来创建新的数组然后将新数组的引用传给置为NULL的数组引用,然后把就数据拷贝到新数组中,然后再将指向就数组的引用置为Null,下次容量再更新的时候就变成它承接新数组的引用了,就这样不断循环,至于开辟的内存空间的释放问题不需要我们担心,系统会自动帮我们释放 

只要我们把指向一个内存空间的所有引用都撤掉,这个内存空间就会在系统检测堆区数据的时候被释放掉。

其实也可以不用上面这么麻烦。直接创建一个临时数组引用,先让它接收我们创建的新数组的地址,然后等我们将就数据拷贝到新数组后,再把这个地址赋给我们的成员数组引用就行

创建临时数组引用暂时帮我们接收新的地址,管理内存,操作完后我们再把地址接收回来就好了

6.当我们创建了一个set访问器的时候,编译器会自动在set中创建一个和属性/索引器同类型的变量来接收外界传来的数据,这个变量名统一为 value 

7.如何像用户抛出异常呢?

用throw关键字创建一个异常对象

语法: throw new System.我们要抛出的异常类型名( “ 报出异常的同时我们要想同时输出的话,如果啥都不想说就不用填 ” );  --- 如果我们已经引用了system命名空间的话,system. 可以不写

8.Equals方法:

equal -- adj.相等的,平等的

Equals方法就是一个用来判断两个数据是否相等的方法,如果两个数据相等方法返回Ture,否则返回False,然后任何一个类中都有这个方法(原理和ToString方法一样,这个方法是属于最开头的基类Object中的)

然后如果是一.编译器提供的基础数据类型的变量的话:可以直接调用Equals方法进行比较

比较语法:要比较的数据1.Equals(要比较的数据2) --- 这两个数据的类型必须一样,因为Equals方法的调用就是成员函数调用

二.如果是我们自己创建的类之间进行比较的话,如果没有进行重写:Equals方法会直接比较两个对象的引用是否相同

如果想比较别的,就需要我们override重写自己创建的类中的Equals方法才能调用它来进行别的数据的比较

stu1和stu2都是我们通过自定义类型实例化的对象,这个对象中由于间接继承的关系有了Object类中的Equals方法,所以我们可以直接通过实例化对象调用

对于自定义类型如果在没重写的情况下调用Equals方法的话,进行比较的就是这两个对象的引用是否相同(是否指向同一个内存空间)

如果我们想比较别的就需要我们用override重写Equals方法

然后

其实int,double,string....都是一个个类,int a 其实就是在通过这个类实例化对象,然后所有类中都有Equals方法,所以我们用int ,double,string...啥的类型实例化的对象也可以用点操作符访问Equals方法

然后,Equals方法中能够传的比较参数的类型必须和调用它的对象的类型一致,这是在方法设计的时候就规定好的 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值