C#引用类型学习

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; }
    }
}
相关推荐
暴走约伯39 分钟前
【VFX工具链源码拆解 09】终极工业化闭环:基于 ID 规则驱动的全自动场景建档、骨骼挂载与男转女场景迁移
unity·c#·游戏引擎·材质
starzy19903 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
布莱克6053 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if
吴可可1233 小时前
ActiveX调用WScript.Shell原理揭秘
开发语言
晴天的雨.9924 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime5 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编
总要学点什么5 小时前
第106篇:三维特效-流动线效果——让一颗光点沿整条线一路滚到头
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
大可不必了15 小时前
03 函数定义和调用
开发语言·python
I_belong_to_jesus16 小时前
C++关于分支预测的优化1
开发语言·c++·算法
承渊政道16 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame