C#引用传递代码记录

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 值传递和引用传递
{
    internal class Program
    {
        static void Main(string[] args)
        {
            person P1=new person();
            P1.name = "张三";
            person P2 = P1;
            P2.name = "李四";
            Console.WriteLine(P1.name);
            Console.WriteLine(P2.name);
            
            //拆装箱
            int n = 10;
            object o = n;
            int nn = (int)o;
            //拿什么装的拿什么拆
            //  double oo = (double)o;
            double oo = (double)nn;
            Console.WriteLine(nn);
            Console.WriteLine(oo);

            Console.ReadKey();
        }
        public class person 
        {public string name
            {get;
                set;
                 
            }
        }
    }
}

代码分析1

  1. 创建对象
    • person P1 = new person(); 创建一个新的 person 对象,并将 P1 设置为引用该对象。
  2. 设置属性
    • P1.name = "张三"; 设置 P1 引用的对象的 name 属性为 "张三"。
  3. 引用赋值
    • person P2 = P1;P2 设置为引用与 P1 相同的对象。此时,P1P2 都指向同一个对象。
  4. 修改属性
    • P2.name = "李四"; 修改 P2 引用的对象的 name 属性为 "李四"。由于 P1P2 引用的是同一个对象,因此 P1.name 也会变为 "李四"。
  5. 输出结果
    • Console.WriteLine(P1.name);Console.WriteLine(P2.name); 都会输出 "李四",因为它们引用的是同一个对象。

代码分析2

  1. 变量 n 的定义
    • int n = 10; 定义一个整数变量 n,并初始化为 10。
  2. 装箱操作
    • object o = n; 将整数 n 装箱到 object 类型的变量 o 中。装箱是将值类型转换为引用类型的过程。
  3. 拆箱操作
    • int nn = (int)o;object 类型的变量 o 拆箱为 int 类型的变量 nn。拆箱是将引用类型转换回原始值类型的过程。
  4. 类型转换
    • double oo = (double)nn;int 类型的变量 nn 转换为 double 类型的变量 oo。由于 int 可以隐式转换为 double,因此显式转换是安全的。
  5. 输出结果
    • Console.WriteLine(nn); 输出 nn 的值,即 10。
    • Console.WriteLine(oo); 输出 oo 的值,即 10.0。
相关推荐
格林威41 分钟前
工业相机Chunk功能全解析:图像嵌入时间戳、编码器元数据(附堡盟C#代码)
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
Arbori_262151 小时前
Rider 调试 VisionMaster C# 用户脚本
c#·visionmaster
小大宇1 小时前
Python 集成 Conda
开发语言·python·conda
还是奇怪1 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
小大宇2 小时前
python flask框架 SSE流式返回、跨域、报错
开发语言·python·flask
Legendary_0083 小时前
LDR6500 设计指南:Type-C 音频快充二合一配件 PD 取电与插拔时序控制方案
c语言·开发语言·音视频
柒星栈3 小时前
PHP 源码怎么加密防破解?三套方案实战指南
开发语言·php·android studio
勉灬之3 小时前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
这是个栗子3 小时前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
蓝创工坊Blue Foundry4 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel