【发布时间】:2018-04-03 11:52:45
【问题描述】:
在C#中,我一直认为非原始变量通过引用传递,原始值通过值传递。
因此,当将任何非原始对象传递给方法时,对方法中的对象所做的任何事情都会影响正在传递的对象。 (C# 101 的东西)
但是,我注意到当我传递一个 System.Drawing.Image 对象时,情况似乎并非如此?如果我将 system.drawing.image 对象传递给另一个方法,并将图像加载到该对象上,然后让该方法超出范围并返回调用方法,则该图像不会加载到原始对象上?
这是为什么?
【问题讨论】:
-
所有变量在C#中默认都是传值的。在引用类型的情况下,您正在传递 引用的值。
-
由于没有给出代码,所以不清楚要问什么。也许 OP 的意思是
image.Load(filename)或者他们的意思是image = Image.Load(filename)其中image是函数参数。
标签: c# parameter-passing pass-by-reference pass-by-value