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; }
    }
}
相关推荐
唐青枫9 小时前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech18 小时前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf2 天前
C#摸鱼实录——IoC与DI案例详解
c#
咕白m6252 天前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
Artech3 天前
[MAF预定义的AIContextProvider-02]AgentSkillsProvider——将Agent Skills引入MAF
ai·c#·agent·agent skills·maf
LDR0063 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术3 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园3 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob3 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享3 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm