簡體   English   中英

DataRow 和受保護的內部構造函數

[英]DataRow and the protected internal constructor

如果 DataRow class 的構造函數在內部受保護並且 DataTable 不從 DataRow 繼承,DataTable 如何使用 NewRow 方法創建 DataRow 的新實例?

例子:

class Program
{
    static void Main()
    {
        // error: inaccessible due to its protection level
        DataRow dr = new DataRow(); 

        // works
        DataRow dr = new DataTable().NewRow();
    }
}

protected internal意味着“派生類可訪問”和“同一程序集中的其他類可訪問”。 DataTableDataRow在同一個程序集中,因此DataTable可以訪問DataRow的所有內部成員。

希望你已經得到了答案。

但我仍然在添加我的答案來解決“為什么它是這樣設計的”。

正如“hvd”所提到的,它們在同一個程序集中,這就是 DataTable 能夠創建 DataRow 實例的原因。

采用這種方法的原因是:

• 數據行包含每列的值 • 理想情況下是內部用於存儲這些值的數組

• 因此每個數據行都包含包含值的數組

• 但是數據行不知道要初始化的數組的大小

• 這取決於 data.table 中的列數

• 但是data.table知道表中有多少列

• 這就是它負責創建或設置 DataRow 的數組大小的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM