1. 请描述一下ref和out在方法参数传递上的异同点?Ref和out
ref和out:
相同点:
1)在实参和形参上都必须添加关键字
2)在方法中对参数的设置和改变将会被保留。
不同点:
1)ref修饰的参数在方法调用前必须初始化,而out修饰的参数在方法调用时候可以不初始化。
2)在方法中out修饰的参数必须进行赋值,而ref修饰的参数不需要。
3)out修饰的参数主要用于返回值,ref修饰的参数主要用于修改。
2. sleep() 和 wait() 有什么区别?
sleep()方法是将当前线程挂起指定的时间。
wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁。
3. 是否可以从一个static方法内部发出对非static方法的调用?
不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。
4. System.Object中有什么方法?有什么用?
1.ToString():是获取对象的字符串表示的一种快捷方式
2.Finalize():允许对象在垃圾回收该对象之前尝试并执行释放资源并执行其他清理操作
3.GetType():获取当前实例的确切运行时类型
4.GetHashCode():用作特定类型的哈希函数
5.构造函数方法:主要用来在创建对象时初始化对象
5. GetHashCode方法有何作用什么时候会用该方法?
GetHashCode方法就是一个判断对象是否相等的快速检查器,当把一个对象添加到一个散列表中时,会先判断这个对象是不是在其中,因为散列表是不允许出现碰撞的。在判断时,并不是直接上来就调用Equals方法,而是会先调用GetHashCode方法,计算出待添加对象的一个散列值:
如果这个散列值不命中,那就说明这个对象一定不在散列中,可以添加;
如果这个散列值命中了,那也不能说明这个对象一定在散列中,因为可能散列值冲突了,所以,要继续调用Equals方法,来看看这个散列值命中的对象,到底在不在散列表里。
6. 传入某个属性的set方法的隐含参数的名称是什么?
value,它的类型和属性所声名的类型相同。
7. 利用operator声明且仅声明了==,有什么错误么?
重载了“==” 就必须重载 “!=”