base(id)就是调用父类的带有id参数的构造函数。
C#里面的this和base 跟JAVA里面的this和super是一样的。你在定义一个变量的时候有一个this引用,指向自身,还有一个引用base,指向父类。关于你说的那种情况就是我说的第一种,如果子类成员有和父类成员同名的时候,就必须用this和base区分。
base 是和 this 相对的,this 代表当前类,base 代表父类。
比如父类里有个 int a; 子类里也有个 int a;,那么 base.a 和 this.a 就是不一样的,除非明确继承关系。
题主这里的 ConcretePrototype1 类继承自 Prototype,构造函数加上 base(id) 就是说子类里的 id 和父类的 id 是一回事儿,先调用父类的构造函数,然后才轮到子类的。
表示这个构造函数调用了基类带一个string参数的构造函数
id是参数。
你可以理解为
public ConcretePrototype1(string id)
{
base(id);
//之后子类构造函数的程序段
......
}