静态类是引用类型还是值类型?如果有人能给出一个好的解释,那将非常有帮助。
无论类是静态的还是非静态的,它始终是引用类型。
值类型和引用类型是关于类型的实例。静态类无法实例化,因此这个问题与静态类无关。
静态类只能包含静态成员,静态成员(如属性)仅在整个应用程序中创建一次,因此如果更改其值,则会在应用程序中的所有位置都发生更改。
class Program
{
static void Main(string[] args)
{
StaticClass.x = 89;
Console.WriteLine(StaticClass.x);
changeValue(StaticClass.x);
Console.WriteLine(StaticClass.x);
Console.ReadKey();
}
static void changeValue(int x)
{
x = x + 1;
}
}
{
public static class StaticClass
{
public static int x { get; set; }
}
}
编辑:-
在这两种情况下,输出都是89。
编辑:-
如果你深入挖掘一下,一个静态类基本上是一个带有私有构造函数和没有与之关联的状态(变量)的类(不像我提供的例子)。所以理论上它是一个引用
类型
没有一个,因为你不能将它作为值类型复制,也不能将其实例化为引用类型。这个问题没有意义,但它确实像结构体、int、double一样存在于堆栈上,但它不允许被复制!
是的,静态类被视为引用类型,因为当您在方法中更改StaticClass.Property值时,此更改将在引用此类的任何地方传播。它只有一个内存地址,不能被复制,因此当发生另一个方法或属性调用时,新值将优先于旧值。