gpt4 book ai didi

C#对象/对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:49 29 4
gpt4 key购买 nike

C# Object/object 是值类型还是引用类型?

我检查过它们可以保留引用,但是这个引用不能用于更改对象。

using System;

class MyClass
{
public static void Swap(Object obj1, Object obj2)
{
Console.WriteLine("After Swapping");
obj1 = 100;
obj2 = 200;
}
}

class MainClass
{
static void Main(string[] args)
{
Object obj1 = new Object ();
obj1 = 10;

Object obj2 = new Object ();
obj2 = 20;

Console.WriteLine(obj1.ToString());
Console.WriteLine(obj2.ToString());

MyClass.Swap(obj1, obj2);

Console.WriteLine(obj1.ToString());
Console.WriteLine(obj2.ToString());

Console.ReadLine();
}
}

最佳答案

您在 Swap 中所做的更改仅限于此 - 您只是在玩指针(和装箱),函数外部的引用保持不变(您有 4 个引用)。如果您更改方法的签名,您将看到不同之处:

尝试 Swap(ref Object obj1, ref Object obj2)

同样适用

Object obj1 = new Object ();
obj1 = 10;

顺便说一下,这并不比 Object obj1 = 10;

要查看对象是否真的是引用类型,请使用具有属性的类,例如:

class Foo {
public int Value {get; set;}
}

更改 Swap 中对象的 Value,您将在主程序中看到效果。

关于C#对象/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com