值类型和引用类型

2022/11/25

值类型的祖宗

引用类型和值类型都继承自System.Object类。

1.几乎所有的引用类型都直接从System.Object继承
2.值类型则继承其子类——System.ValueType。

System.Object-->System.ValueType

System.ValueType本身是一个类类型,而不是值类型。

ValueType重写了Equals()方法,从而对值类型按照实例的值来比较,而不是引用地址来比较。

可以用Type.IsValueType属性来判断一个类型是否为值类型:

TestType testType = new TestType ();
if (testTypetype.GetType().IsValueType)
{
     Console.WriteLine("{0} is value type.", testType.ToString());
}

string

C# 对于字符串做了特殊处理

string s1 = "a";

string s2 = s1;

s1` = "b";//s2 is still "a"

改变s1的值对s2没有影响。这更使string看起来像值类型。
实际上,这是运算符重载的结果,当s1被改变时,.NET在托管堆上为s1重新分配了内存。

posted @ 2022-11-25 22:28  牧绮姬  阅读(16)  评论(0编辑  收藏  举报