【发布时间】:2014-06-23 06:24:52
【问题描述】:
所以我在深入阅读 Jon Skeet 的 C# 时遇到了一些神话,比如引用类型总是由 ref 传递,所以我决定自己做一个小实验。
正如您在下面的代码中看到的,我有一个简单的 Car 类,它有一个属性,在调用构造函数时初始化为 500。我还有将 null 分配给参数值的 NullIt 函数和仅更改 Speed 属性值的 SpeedUp 方法。
检查 main 方法,您可以看到我实例化了一个 Car 对象,然后我将对象传递给静态 SpeedUp 方法,Speed 值更改为 1000,但是当我将它传递给静态 NullIt 方法时,对象保持不变.由此我唯一可以假设的是对象是按值传递的,而字段/属性是通过引用传递的。是这样吗?
我知道如果我使用 ref 关键字传递它会返回 null。
class Program
{
static void Main(string[] args)
{
Car c = new Car();
Car.SpeedUP(c);
Car.NullIt(c);
}
class Car
{
public int Speed { get; set; }
public Car() { Speed = 500; }
public static void SpeedUP(Car c)
{
c.Speed = 1000;
}
public static void NullIt(Car c)
{
c = null;
}
}
}
【问题讨论】:
-
在 C# 中,除非明确使用
ref或out,否则总是按值传递。
标签: c#