C#入门经典中泛型一章中的一个问题:泛型类变量.属性.add 是怎么回事啊
简单的类如下:publicclassFarm<T>:IEnumerable<T>whereT:Animal{privateList<T>animals=newList<T...
简单的类如下:public class Farm<T>:IEnumerable<T>
where T:Animal
{
private List<T> animals = new List<T>();
public List<T> Animals
{
get
{
return animals;
}
}
}
在主程序中定义了一个变量 farm:Farm<Animal> farm = new Farm<Animal>();
然后向集合中添加时采用的是如下方法:farm.Animals.Add(new Chicken("Vera"));
为什么会这样啊 Animals在类中不是个属性吗 怎么用到了:Animals后使用Add方法啊
什么意识啊 展开
where T:Animal
{
private List<T> animals = new List<T>();
public List<T> Animals
{
get
{
return animals;
}
}
}
在主程序中定义了一个变量 farm:Farm<Animal> farm = new Farm<Animal>();
然后向集合中添加时采用的是如下方法:farm.Animals.Add(new Chicken("Vera"));
为什么会这样啊 Animals在类中不是个属性吗 怎么用到了:Animals后使用Add方法啊
什么意识啊 展开
2个回答
展开全部
Animals是个属性,不过是个list类型的属性,所以,add就是对这个list进行添加值的操作
追问
您的意思是说Add是对animals中添加值吗?这个值怎么会自动添加到animals中呢?这个类不是个只读的吗?
追答
调用方法并不等同于设置值。
也或者是我没说清,farm.Animals.Add实际上是先调用farm.Animals的get方法,获取到实际不对外公开的变量animals,然后调用animals的Add方法,对List animals进行添加值的操作。
还有一点要纠正,这个类不是只读- -最多只是Animals这个属性只读而已。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询