C# 的引用类型主要包括以下几类:
类类型
接口类型
委托类型
数组类型,即使元素是值类型,数组本身也是引用类型。
字符串类型(string):string 是 System.String 的别名,属于引用类型。
对象类型(object):object 是所有引用类型的基类型,也是引用类型的一种。
字符串虽为引用类型,但行为类似值类型。修改字符串会创建新对象,原字符串保持不变。
cs
private void button1_Click(object sender, EventArgs e)
{
string s1 = "Hello";
string s2 = s1;
s2 = "World"; // s1仍为"Hello"
textBox1.Text = s1 + Environment.NewLine;
textBox1.Text += s2;
}

引用类型需通过地址访问数据,可能比值类型稍慢,但适合管理复杂对象和共享数据;
cs
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2和p1指向同一对象
p2.Name = "Bob";
//Console.WriteLine($"p1.Name: {p1.Name}"); // 输出"Bob"
//Console.WriteLine($"p2.Name: {p2.Name}"); // 输出"Bob"
textBox1.Text = p1.Name + Environment.NewLine;
textBox1.Text += p2.Name + Environment.NewLine;
// 检查引用是否相同
bool areSame = object.ReferenceEquals(p1, p2);
//Console.WriteLine($"p1和p2引用同一对象: {areSame}"); // 输出"True"
textBox1.Text += Environment.NewLine;
textBox1.Text += "p1和p2引用同一对象: " + areSame;
}
}
class Person
{
public string Name { get; set; }
}
}
