C#基础——02

C#中Equals和==区别

C#提供值类型和引用类型,值类型存储在栈上,故用==判断是直接判断其值是否相等,因为值类型不存在堆中的数据因此值类型的Equals也是判断数据。即,对于值类型而言,==与Equals相同,均是判断其值是否相等。

对于引用类型而言,其栈中存储的是对象的地址,那么==就是比较两个地址是否相等,即是否指向同一个对象;Equals函数则是比较两个对象在堆中的数据是否一样。

class和struct的区别

class和struct最本质的区别是class是引用类型,而struct是值类型。class(类)是面向对象编程的基本概念,所有的类都最终继承自System.object类,因此是一种引用类型。struct (结构是一种值类型,所有的结构都继承自System.ValueType类,struct实例在创建时分配在线程的堆栈(stack)上。

Sealed的作用是?

sealed的中文意思是密封,故名思义,就是由它修饰的类或方法将不能被继承或是重写。sealed关键字的作用: 在类声明中使用sealed可防止其它类继承此类;在方法声明中使用sealed修饰符可防止扩充类重写此方法。

 const (常量)和readonly (只读)的区别

答:const 与readonly相同点: 运行期间都只能读取不能更改

1)const定义时即初始化,运行期间无法再初始化;readonly除了在定义时可以初始化外,还能在运行期间的构造函数中初始化,实例只读变量只能在实例构造函数中初始化,静态只读变量只能在静态构造函数中初始化
2)const定义的变量只能通过类名称访问,而readonly会根据其是否定义为静态类型而分别通过对象与类名称访问
3)const只能定义值类型与字符串,若定义引用类型则初始化值必须为null,而readonly无此限制,可以定义引用类型时初始化为null,在对应的构造函数中再重新初始化

 ref参数和out参数是什么?有什么区别?针对函数 (方法)的参数的

(1)使用 ref 参数时,传入的参数必须先被初始化。对 out 参数而言,必须在方法中对其完成初始化。

(2)使用 ref 和 out 时,在方法的参数和执行方法时,都要加ref 或 out 关键字,以满足匹配。

(3)out 适合用在需要 return 多个返回值的地方,而 ref 则用在需要被调用的方法,修改调用者的引用的时候。

什么时候选择用ref ?什么时候选择用out ?

1) ref 的使用:使用 ref 进行参数的传递时,该参数在创建时,必须设置其初始值,所以ref 侧重于修改;

2)out 的使用:采用 out 参数传递时,该参数在创建时,可以不设置初始值,但是在方法中必须初始化,所以 out 侧重于输出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值