1、值和引用。
虽然知道值传递的是副本,引用传递的是地址。但还是搞不清楚两个问题。
(1)值传递引用和引用传递引用到底传递的是引用的是什么东西,那么关于传递引用的其他问题也就都不知道了。
(2)值传递值类型
using System;
class RefClass
{
static void AddValue(int x)
{
x++;
}
static void Main()
{
int i = 22;
AddValue(i);
Console.WriteLine(i);
}
}
为什么执行了x++,i的值还是22。
2、接口的用处。
我的看法就是因为只能继承一个类,所以用它来帮助继承多个类的方法。
3、委托和事件。
委托给我的感觉和接口、重载有点像。但又感觉很别扭。
事件的话,我觉得就是对动态的响应,真不知道和委托有什么关系,不知道为什么总要和委托放到一起。
望各位大虾给与解答,谢谢!
1.
copied from: http://space.cnblogs.com/question/1425/
对象们都住在不同的房间里,每个房间只能住一个对象.对象们都被锁在房间里,永远没有办法搬家(至少从我们讨 论的角度来说,这个说法是正确的).所以如果你知道了一个对象的房间号,就能找到对应的对象. 现在假如我们有两张名片,上面如果写着相同的房间号,我们就可以断定,这两张名片是同一个对象分发出来的,这就是同一性,也就是你所说的一致. 假如1号房里住着一个值为1的整数对象, 2号房里住着另一个值为2的整数对象,3号房里住着另另一个值为1的整数对象.我们又有它们各自的一张名片, 那么,第一个名片和第三个对应的对象的值是相等的,但是它们不是同一个对象,用你的词来说,也就是说它们"相等",但不"一致". 如果上面说得太清楚了,那么这里让你再困扰一会吧,哈哈: 这里的名片就是引用(i, count之类的变量/字段等的名称); 房间所在的大楼就是内存,房间号就是内存地址. 对象就是内存里保存的数据.
---------------
在调用方法传递参数时,我们可以选择把对象的内容复制一份传递过去,也可以选择把对象所在的房间号传递过去(当然,这样一来,被调用的方法得先从对应的房间里找到指定的对象才能进一步操作).第一种方法传递的是一个全新的对象,和原来的对象没有任何关系,只是在传递时两者的值相等,所以叫"按值传递";第二种方法则是引用传递,由于被调用方法里操作的对象就是原来的对象,所以对它的任何修改都可以影响到调用方法.
2,
对,在.net里接口最大的用处就是这个.
3, 委托是一种类型,和class, enum, struct等类似. 事件则是对象成员的一种分类,和property, field, method等类似. 每个对象成员都拥有/属于一个类型. 这就是委托和事件之间的关系.
2.对的,就是用来帮助实现继承多个类的一种变通用的工具,事实上就是一个纯抽象类,没什么特殊的,关键在于你能不能在接口层次上进行建模和应用
3.委托就是一个指向方法的引用,调用委托就调用了方法,觉得别扭就学术派一些用接口代替吧
事件是一种“提供”的概念,“某类提供了某事件以供监听”,而委托是“需要”的概念,“某类执行某方法时需要外部给予某委托“
事件是设计模式中的观察者模式的快捷版
同意楼上的!
1、你需要去了解.net里的值类型以及引用类型。
2、巧妙的应用接口的好处是增强系统的可扩展性,针对接口编程,而不是针对具体的实现编程 。
3、委托你可以理解成函数指针。
更多细节,推荐书籍: