Tag: reference type

.NET参数传递 – 按值引用v / s

我试图validation我对C#/ .NET / CLR如何处理值类型和引用类型的理解。 我已经阅读了很多相互矛盾的解释 这就是我今天所理解的,如果我的假设是错误的,请纠正我。 诸如int等的值类型存在于堆栈上,引用类型存在于托管堆上, 但是如果引用类型具有例如double类型的实例变量,则它将与其对象一起存在于堆上 第二部分是我最困惑的。 让我们考虑一个名为Person的简单类。 Person有一个名为Name的属性。 假设我在另一个类中创建了Person实例,我们称之为UselessUtilityClass。 请考虑以下代码: class UselessUtilityClass { void AppendWithUnderScore(Person p) { p.Name = p.Name + “_”; } } 然后我们做的地方: Person p = new Person(); p.Name = “Priest”; UselessUtilityClass u = new UselessUtilityClass(); u.AppendWithUnderScore(p); Person是一个引用类型,当传递给UselessUtilityClass时 – 这就是我去的地方 – 坚果……作为Person引用实例的VARIABLE p由VALUE传递,这意味着当我写p.Name时我会看到“牧师_” 如果我写的话 Person p2 = p; 我做到了 p2.Name […]

将类型引用类型设置为null不会影响复制的类型?

为什么这会产生“0”? object a = 0; object b = a; a = null; Console.WriteLine(b.ToString()); // Produces “0” Console.Read(); 不是b指向同一个位置并且设置a = null有效地使b null?

你能在一个结构中有一个类吗?

在C#中是否可以使用具有类型类型的成员变量的Struct? 如果是这样,信息在哪里存储,堆栈,堆,或两者?

“ref”关键字和引用类型

我的团队中的某个人偶然发现了引用类型上ref关键字的特殊用法 class A { /* … */ } class B { public void DoSomething(ref A myObject) { // … } } 是否有人理智会做这样的事情? 我在C#中找不到这个用途

参考和值类型方案

我一直在努力彻底了解参考和价值类型。 就在我以为自己拥有它的时候,我遇到了这个场景…… 我创建了一个包含单个对象的类。 class Container { public object A {get; set;} } 当我创建这个Container类的实例(a)时,我正在创建一个引用类型的实例。 我为类中的对象分配了一个整数。 据我所知,这将被装箱作为一个对象,另一个参考类型。 int start = 1; Container a = new Container{ A=start }; 我创建了Container类的另一个实例(b),但是为它分配了第一个容器的值,b的值现在是对a的引用。 Container b = a; 正如预期的那样,当我打印出aA和bA的值时,它们是相同的。 Console.WriteLine(“aA={0},bA={1}”,aA,bA); //aA=1,bA=1 并且,正如预期的那样,当我更改aA的值时,bA的值也会因为它们引用相同的对象而发生变化。 aA = 2; Console.WriteLine(“aA={0},bA={1}”,aA,bA); // aA=2,bA=2 现在我决定尝试使用单个本地对象。 同样,我将整数打包到第一个对象中,并将第一个对象的值分配给第二个对象。 我相信这个对象应该是一个引用类型,所以c和d应该引用同一个对象。 不改变任何东西,它们返回相同的值。 int start = 1; object c = start; object d […]

为什么字符串是引用类型?

为什么string是引用类型,即使它通常是原始数据类型,如int,float或double。