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; }
    }
}
相关推荐
小小龙学IT6 小时前
Python Polars 高性能数据处理引擎深度解析
开发语言·python·rust·1024程序员节
quantdash_cc6 小时前
如何利用标的信息为研究股票池补充名称和交易所信息?
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
CRMEB系统商城7 小时前
家电零售的供应商协同与物流提效
java·开发语言·人工智能·小程序·1024程序员节
王大师王文峰7 小时前
Java+AI 面试题(二):业务场景设计 10 例【客服机器人、合同审查、Text2SQL、告警降噪、成本优化】场景题答法与追问链路
java·开发语言·人工智能
言乐67 小时前
Python实现三轴联动根据数据自动打磨镜片模型
开发语言·python
CHHH_HHH8 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
jimy18 小时前
C++ 中 xvalue 的 identity 存在哪里?和 lvalue 的 identity 有什么区别?
开发语言·c++·1024程序员节
yujunl8 小时前
U9 无授权的模式WebAPI开发的总结
开发语言·1024程序员节
zzu123zsw8 小时前
为什么 Python 做 Agent 总在并发中崩溃?拆解 Blockcell 在 Rust 下的 Host-Cell 隔离与自愈状态机
开发语言·python·rust·大模型·ai agent
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》Provider分析与实现
开发语言·c++·语言模型