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 相同的对象。此时,P1 和 P2 都指向同一个对象。
  4. 修改属性 :
    • P2.name = "李四"; 修改 P2 引用的对象的 name 属性为 "李四"。由于 P1 和 P2 引用的是同一个对象,因此 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。
相关推荐
code2cat10 分钟前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
北京中科新远科技15 分钟前
高速交换机端口预算怎么做?下行、上联、拆分和冗余计算框架
开发语言·php
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
AI源码1 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
旖旎夜光2 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
揽星河..2 小时前
【C语言】结构体
c语言·开发语言
2601_966949652 小时前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
神仙别闹4 小时前
基于Python实现英词语自动对齐系统
开发语言·python
akinggw4 小时前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
老歌老听老掉牙4 小时前
圆柱端面四平面交线及其在yoz面投影的几何解析与 Python 实现
开发语言·python·平面