DataTable是通过引用传递的吗?

Raz*_*t4x 0 .net c#

这听起来像是一个愚蠢的问题,但我偶然发现了这一点.我知道您可以使用ref通过引用传递参数.但我有这种方法

    public void SaveRecordsIntoTemporaryTable(DataTable objDataTable, string userSessionID)
   {

       // The objDataTable has 5 columns "Id", "Name", "Tag_1", "Tag_2", "Tag_3"
       // Now in here I remove "Tag_1", "Tag_2", and "Tag_3"
       objDataTable.Columns.Remove("Tag_1");
       objDataTable.Columns.Remove("Tag_2");
       objDataTable.Columns.Remove("Tag_3");

       ...

   }
Run Code Online (Sandbox Code Playgroud)

现在我在第三行设置了一个调试点,但在删除此列后,我将"Tag_3"光标悬停objDataTable在参数中,DataTable它显示还删除了列?那么,它是通过引用传递的吗?

UPDATE

好吧,如果它过去了reference,如果我使用它会有什么不同ref

Hab*_*bib 7

那么,它是通过引用传递的吗?

它的地址是按值传递的.由于DataTable是一个类(引用类型),它的地址通过值传递,因此您可以看到更改.

尝试做:

objDataTable = null;
Run Code Online (Sandbox Code Playgroud)

如果它真的通过引用传递,那么您将看到调用者设置DataTablenull不会发生.

请参阅:Jon Skeet在C#中传递的参数