原始类型(Number,String等)按值传递,但是对象是未知的,因为它们可以是值传递(如果我们认为持有对象的变量实际上是对象的引用)并且通过引用传递(当我们认为对象的变量保存对象本身时).
虽然最后并不重要,但我想知道提交传递约定的参数的正确方法是什么.是否有JavaScript规范的摘录,它定义了与此相关的语义?
在C#中,我一直认为非原始变量是通过引用传递的,而原始值是通过值传递的.
因此,当将任何非基本对象传递给方法时,对方法中的对象所做的任何操作都会影响传递的对象.(C#101的东西)
但是,我注意到当我传递一个System.Drawing.Image对象时,情况似乎并非如此?如果我将system.drawing.image对象传递给另一个方法,并将图像加载到该对象上,那么让该方法超出范围并返回调用方法,该图像未加载到原始对象上?
为什么是这样?
这听起来像是一个愚蠢的问题,但我偶然发现了这一点.我知道您可以使用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?