c# 属性中为什么会包含方法?

作为一个菜鸟,我不得不说这是个很菜的问题,但也困惑我有一段时间了。举个例子吧:
ListBox1.Items.Add("David"); 这是一条C#语句,Items是一个属性,它后面为什么还会有Add方法呢?请各位达人帮帮小弟,解我心头之惑。

给这么多分,那就让我来给你翻一翻这几个类的内幕吧!
实际上ListBox1是一个ListBox类的对象,Items是一个ObjectCollection类的对象,这两个类和自定义的类没有区别,只是它们被Microsoft封装起来了,我们除了它们的公有方法和属性外无法看到里面的其它东西。
也就是说这个Items除了是ListBox1对象的属性这个身份外,它本身也是一个对象,也有自己的方法和属性,如Add方法就是Items对象的一个公有方法。
下面是我模拟的这几个对象的关系,当然这肯定是一个阉割版的ListBox和ObjectCollection类了。
class Program
{
static void Main()
{
ListBox lb = new ListBox();
lb.Items.Add("sdf");
Console.Write(lb.Items[0].ToString());
Console.Read();
}
}
class ListBox
{
ObjectCollection col = new ObjectCollection();
public ObjectCollection Items
{
get { return this.col; }
set { this.col = value; }
}
/*
... ListBox的其它属性和函数
*/
}
class ObjectCollection
{
List<object> items = new List<object>();
public void Add(object item)
{
this.items.Add(item);
}
public object this[int index]
{
get { return this.items[index]; }
set { this.items[index] = value; }
}
/*
... ObjectCollection的其它属性和函数
*/
}
你把它复制到控制台程序里面去可以看看模拟情况。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-18
这里的add方法不是属性所拥有,而是要对这个属性进行什么操作
ListBox1.Items.Add("David");
是指对ListBox1控件的Items属性进行Add操作,即添加一个新的名为"David"的Items
第2个回答  2011-09-18
额 。自己解决
相似回答