C#引用类型的理解和值类型的区别

数据类型

C# 语言的数据类型分为值类型引用类型

值类型包括:浮点型、字符型、布尔型、整型、枚举型等;

引用类型包括:数组、委托、字符串、类、接口、对象等。

想要区【分值类型引用类型】就必须理解他们的底层原理

        public static void Main(String[] arge)
        {
            int a = 1;

            int b = a; // b = a = 1

            b = 2;

            Console.WriteLine("a:"+a); //输出结果a:1
        }

public static void Main(String[] arge)
        {
            /* 
             * 首先说明一下String是引用数据类型,但是他比较特殊,
             *  他一但赋值后,值就无法被修改,只能指向另一个地址
             *  每一个地址都有一个不可改变的值(字符串)
             */
            String a = "1";// 假设说a指向了一个地址a1

            String b = a; // 这时b的地址也指向了一个地址a1

            b = "2"; // 因为 字符串的值无法被修改,所有指向了另一个地址b2

            Console.WriteLine("a:"+a+" - " + "b:" + b); // 输出结果a:1 - b:2 
            // a 指向的地址为a1   b指向的地址为b2    

        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Windows2022_08_10
{
    internal class MainCategorymian
    {
        // 程序入口
        public static void Main(String[] arge)
        {
            Consume consume = new Consume();
            consume.Record();
        }
    }
    class Card
    {
        public string Money { get; set;}
    }

    class Consume
    {
        public void Record()
        {
            Card pCard = new Card()
            {
                Money = "8000" 
            };
            Console.WriteLine("pCard 的 Money初始值:" + pCard.Money);
            // 指向同一个地址
            Card sCard = pCard;

            // 修改这地址上的值
            sCard.Money = "6000";

            Console.WriteLine("pCard 的 Money被sCard修改后的值:" + pCard.Money);

            /*
             *  输出结果:
             *      pCard 的 Money初始值:8000
             *      pCard 的 Money被sCard修改后的值:6000
             */
        }
    }
}

相同点:
        引用类型可以实现接口,值类型当中的结构体也可以实现接口;
        引用类型和值类型都继承自System.Object类。 

不同点:

        值类型和引用类型最大的区别,就是它们在内存中的存储方式不同。

        值类型的变量在栈中分配,引用类型的实例在堆中分配。

        值类型是直接存储值,引用数据类型直接是引用其他地址值。

        值类型在内存管理方面具有更好的效率,并且不支持多态,适合用做存储数据的载体;

        引用类型支持多态,适合用于定义应用程序的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值