关于DataColumn类与DataColumnCollection类的有关问题困扰小弟我很久,望前辈解惑

关于DataColumn类与DataColumnCollection类的问题困扰我很久,望前辈解惑。
一是DataColumnCollection是怎么被DataTable类实例化的?因为我无法用new直接实例化它,这种现象普遍存在于.NET中。
二是DataColumn中的Table字段是只读的(定义中只有get,无set)那么,当我new了一个DataColumn时,这个DataColumn的Table字段是NULL,为什么当由DataTable.Columns.Add()添加后,DataColumn.Table字段被赋值了,怎么做到的?
------解决思路----------------------
1.扩展方法,当你用扩展方法去获取DataTable中的列集合,就会返回一个DataColumnCollection类型
2.DataColumn中的Table字段,表示它的父控件,也就是它是属于哪一个DataTable
搜一搜:属性
属性其实是个函数(get,set),它并不是一个变量,所以也不存在什么时候赋值.你什么时候去取值,就会调用函数去对应的地方取,取不到就是null呗
------解决思路----------------------
datatable初始化时创建的
this.columnCollection = new DataColumnCollection(this);
DataColumnCollection初始化时,table就被传入了

internal DataColumnCollection(DataTable table)
{
    this._list = new ArrayList();
    this.defaultNameIndex = 1;
    this.columnsImplementingIChangeTracking = DataTable.zeroColumns;
    this.table = table;
    this.columnFromName = new Hashtable();
}