C#复习之值类型和引用类型

使用和存储上的区别

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)
        {
            Console.WriteLine("值类型和引用类型");

            #region 知识点一 变量类型的复习
            //无符号整形
            byte b = 1;
            ushort us = 1;
            uint ui = 1;
            ulong ul = 1;
            //有符号整形
            sbyte sb = 1;
            short s = 1;
            int i = 1;
            long l = 1;
            //浮点数
            float f = 1f;
            double d = 1.1;
            decimal de = 1.1m;
            //特殊类型
            bool bo = true;
            char c='a';
            string str = "str";
            //复杂数据类型
            //enum 枚举
            //数组(一维、二维、交错)

            //把以上 学过的 变量类型 分成 值类型和引用类型
            //引用类型:string 数组 类
            //值类型:其他、结构体
            #endregion

            #region 知识点二 值类型和引用类型的区别

            //使用上的区别

            //值类型
            int a = 10;
            //引用类型
            int[] arr = new int[] { 1, 2, 3, 4 };

            //申明了一个b让其等于之前的a
            int b = a;
            //申明了一个arr2让其等于之前的arr
            int[] arr2 = arr;
            Console.WriteLine("a={0},b={1}", a, b);
            Console.WriteLine("arr[0]={0},arr2[0]={1}", arr[0], arr2[0]);

            b = 20;
            arr2[0] = 5;
            Console.WriteLine("修改了b和arr2[0]之后");
            Console.WriteLine("a={0},b={1}", a, b);
            Console.WriteLine("arr[0]={0},arr2[0]={1}", arr[0], arr2[0]);

            //值类型 在相互赋值时 把内容拷贝给了对方 它变我不变
            //引用类型的相互赋值 是 让两者指向同一个值 它变我也变

            //2.为什么又以上区别
            //值类型 和引用类型 存储在的 内存区域 是不同的 存储方式是不同的
            //所以造成了 他们在使用上的区别

            // 值类型存储在 栈空间 ——系统分配,自动回收,小而快
            //引用类型 存储在堆空间 ——手动申请和释放,大而慢

            //new 了 就是开了新房间 和之前的 没有什么关系了 所以 arr不会有任何变化
            arr2 = new int[] { 99, 3, 2, 1 };
            Console.WriteLine("arr[0]={0},arr2[0]={1}", arr[0], arr2[0]);
            #endregion
        }
    }
}

string是一个特殊的引用类型,它不遵循它变我也变

特殊的引用类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值