c# 笔记

关于结构体和类的区别:

借助类(class),两个变量可以引用同一个对象,因此,对一个变量执行的运算可以会影响到另一个变量的引用。

 class print1
    {
        public int x;
        public int y;
        public print1(int x, int y)
        {
            this.x = x;
            this.y = y;
        }

    }


借助结构体(struct),每个变量都有自己的数据副本,因此,对一个变量执行的运算不会影响到两一个变量

 struct print
    {
        public int x;
        public int y;
        public print(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
 class Program
    {
        static void Main(string[] args)
        {
            print p = new print(10, 10); //值不变
            print b = p;
            p.y = 20;
            Console.WriteLine(b.x);

            print1 p1 = new print1(10, 10); // 值变
            print1 b1 = p1;
            p1.x = 20;
            Console.WriteLine(b1.x);
        }
    }

委托的关键字:delegate:

namespace DelegateDemo
{
    // 创建一个委托类型使用关键字delegate(委托)
    public delegate void getDelegate(string str);

    class Program { 
        static void Fun1(string s)
        {
            Console.WriteLine("这是方法一:{0}", s);
        }
        static void Fun2(string s)
        {
            Console.WriteLine("这是方法二:{0}", s);
        }

        static void Main(string[] args)
        {
            getDelegate x, y;
            x = Fun1;
            y = Fun2;
            x("1");
            y("2");
        }
    }
}

值类型和引用型推栈存储:

值类型都会存储在栈中,
引用类型首先会把引用的地址存储在栈中,指向->在堆中开辟一块空间的元素或者对象;当引用的地址弹栈时,堆中的元素会被GC回收
引用类型赋值:
        string str1 = "str1";
        string str2 = "str2";
        str1 = str2;
    赋值的时候赋值的引用地址,而不是堆内存,当str2赋值给str1时候;str2就会被销毁,指向的堆内存被回收

    如果数组是一个值类型,那么数组中直接存储值,如果是一个引用类型的数组(数组中存储的是引用类型),那么数组中存储的是引用(内存地址)      

    Vector[] vector = new Vector[]{new xxx(),new xxx(),new xxx()}; // 引用类型的数组

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值