关于C#类的一个基础问题

img


如图,我将实例创建了10次,而且名字都是COM,并加入到一个LIST中,这个编译能够通过

img


但如果我不写For循环直接命名,出现第二次同名C的时候就报错了

第二个我能理解,因为不能存在两个相同名称的实例,但是为什么我用For去写就允许存在相同名称的实例呢

这涉及到C#变量的作用域的概念,请自行查阅资料。

这里以人名为例帮助你理解为什么?

在C#中,声明变量就好比给人取名字。在一个村子(假如村子名叫“互助村”)里,不可能有两个人取名为“张三”的。这个互助村对应C#中的作用域,“张三”即为一个变量名,“张三”这个具体的人即为一个实例。

极端一点的例子,把作用域缩小到一个家庭的两个双胞胎,总不能把两个双胞胎取成相同的名字(“张三”)吧。

这里的for=10相当于有10个不同的村子里都有人取名叫“张三”,这是被允许的。

效果是一样的,只是C#的一些语法特性而已,写起来快一点而已。

var com = new Conclu
{
    Id = i
};

以上这种写法叫对象初始化器,它可以减少一些代码量,看起来更简洁,仅此而已。