11得票5回答
将引用类型设置为null不会影响被复制的类型?

为什么这会输出 "0" ?object a = 0; object b = a; a = null; Console.WriteLine(b.ToString()); // Produces "0" Console.Read(); b难道不是指向相同的位置吗,将a设置为null会有效地使b变为...

11得票2回答
如何复制引用类型

可能是重复问题: 在C#中克隆对象 我有一个类,其中包含属性,其中一些是引用类型(其他类的实例)(CookieContainer)。 我想要这个类的完全副本,以便对先前版本的任何更改都不会影响此新实例。 是否有一般解决此类问题的方法,还是我应该手动完成?

11得票5回答
在C#中,使用值类型与引用类型的区别

我的问题是: 什么时候应该使用值类型,什么时候应该使用引用类型? 一个相对于另一个有什么优缺点? 如果仅使用引用类型会怎样?这会有什么危害吗? 请同时讨论每种类型的优缺点,我也想要理解。

10得票6回答
既然Int32是值类型,为什么它还要继承.ToString()方法?

这些文档是关于.ToString()的,这引发了这个问题。它们指出: 因为Object是.NET Framework中所有引用类型的基类,所以这种行为[.ToString()]被未重写ToString方法的引用类型继承。 然而,它在进一步说明: 例如,基本类型(如Char、Int3...

10得票9回答
在C#中对值类型进行装箱的使用场景是什么?

有时需要将值类型的实例视为引用类型的实例。 对于这种情况,通过一种称为装箱的过程,可以将值类型实例转换为引用类型实例。当值类型实例被装箱时,在堆上分配存储空间,并将实例的值复制到该空间中。对该存储空间的引用放置在堆栈上。装箱的值是一个对象,即包含值类型实例内容的引用类型。 理解.NET的公共类...

10得票3回答
在泛型接口中实现可空类型

在之前的问题中,我提到了如何使用公共类实现通用接口,并成功地实现了它。然而,我想要传递的类型之一是内置的可空类型,例如:int、Guid、String等。 以下是我的接口: public interface IOurTemplate<T, U> where T : cl...

10得票5回答
具有空值的引用类型是什么类型?

根据:http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html 4.5.2 引用类型的变量 引用类型可以持有null引用。 当赋值为null时,是否可能检索引用类型的声明类型? 具体来说,在使用反...

9得票2回答
如何检查泛型方法参数是否为值类型?

有没有一种方法可以检查变量是值类型还是引用类型? 想象一下: private object GetSomething<T>(params T[] values) { foreach (var value in values) { bool is...

9得票4回答
指定接口只能由引用类型实现 C#

如果我在C#中声明一个接口,有没有办法明确声明实现该接口的任何类型都是引用类型? 我之所以想这么做,是因为无论在哪里使用该接口作为类型参数时,我都不必指定实现类型也必须是引用类型。 以下是我想要实现的示例: public interface IInterface { void A...

9得票2回答
如何创建具有命名引用类型的元组?

下面这行代码创建了一个命名的ValueTuple: var tuple = (a:1, b:2, c:3, d:4, e:5, f:6); 值类型无法高效地传递。 C#7 是否提供了使用 Tuple 类型创建命名元组的方法?