国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

值類型引用類型、值傳遞引用傳遞探討

2019-11-17 03:06:47
字體:
來源:轉載
供稿:網友

值類型引用類型、值傳遞引用傳遞探討

和同事喋喋不休,吵個不停,于是查閱文檔,復習相關的值類型和引用類型、值傳遞和引用傳遞,總結分享!如有錯誤還望指正!一個人思想有限,集思廣益,共同發(fā)展。

值類型和引用類型

首先分清C#中的值類型和引用類型的區(qū)分:

值類型包括:intchardoublefloatlongshortbyteboolenumstructdecimal

值類型都是派生自ValueType ValueType 是抽象類

值類型不能繼承,只能實現(xiàn)接口。

②string、數(shù)組、類(自定義數(shù)據類型)、接口、委托、

int[] n={1,2,3};//引用類型。

引用類型都派生自:Object

引用類型可以繼承(類之間可以繼承)

需要知道和明白的規(guī)律

1、記住聲明變量都在棧上

2、值類型聲明變量之后,不管值是多大多小,變量大小固定,存在棧上

3、引用類型聲明變量之后,取決于值的多少!大小不固定,存放在棧和堆上

值傳遞案例如下:

    class PRogram    {        static void Main(string[] args)        {            //1.值類型=====            //int n = 10;            //int m = n;            //m++;            //Console.WriteLine(n);            //Console.ReadKey();            //2.引用類型========            //Person p = new Person();            //p.Age = 17;            //p.Name = "johnson";            //p.Email = "johnsondzd@QQ.com";            //Person p1 = p;            //p1.Age = p.Age + 12;            //Console.WriteLine(p.Age);            //Console.ReadKey();            //案例1            //int m = 1;            //M1(m);//值類型作為參數(shù)傳遞的時候是【拷貝了一個副本】,所以改變副本不影響原來的內容            //Console.WriteLine(m);            //Console.ReadKey();            //案例2            //int[] arrInt = { 1, 3, 5, 7, 9, };            //M2(arrInt);            //for (int i = 0; i < arrInt.Length; i++)            //{            //    Console.WriteLine(arrInt[i]);            //}            //Console.ReadKey();            //案例3            //int[] arrInt = { 1, 3, 5, 7, 9, };            //M3(arrInt);            //for (int i = 0; i < arrInt.Length; i++)            //{            //    Console.WriteLine(arrInt[i]);            //}            //Console.ReadKey();            //案例4            //Person p = new Person();            //p.Name = "johnson";            //p.Age = 16;            //M4(p);            //Console.WriteLine(p.Name);            //Console.WriteLine(p.Age);            //Console.ReadKey();            //案例5            Person p = new Person();            p.Name = "johnson";            p.Age = 16;            M5(p);            Console.WriteLine(p.Name);            Console.WriteLine(p.Age);            Console.ReadKey();        }        static void M5(Person per)        {            per = new Person();            per.Name = "vinson";            per.Age = 32;        }        static void M4(Person per)        {            per.Name = "vinson";            per.Age = 32;        }        static void M3(int[] arr)        {            int[] arr1 = { 2, 4, 6 };            arr = arr1;            for (int i = 0; i < arr.Length; i++)            {                arr[i] = arr[i] + 2;            }        }        static void M2(int[] arr)        {            for (int i = 0; i < arr.Length; i++)            {                arr[i] = arr[i] + 2;            }        }        static void M1(int n)        {            n = 10;            n++;        }    }    class Person    {        public string Name { get; set; }        public int Age { get; set; }        public string Email { get; set; }    }

 

引用傳遞案例

    class Program    {        static void Main(string[] args)        {            //值傳遞:值類型、引用類型            //引用傳遞:值類型、引用傳遞 ref            //1、引用傳遞的是值類型            //int n = 10;            //M1(ref n);            //Console.WriteLine(n);            //Console.ReadKey();            //2、引用傳遞的是引用類型            Person p = new Person();            p.Name = "johnson";            M2(ref p);            Console.WriteLine(p.Name);            Console.ReadKey();        }        private static void M2(ref Person p)        {            p = new Person();            p.Name = "vinson";        }        //ref表示“引用傳遞”,引用傳遞傳遞的不是棧中的數(shù)據(對于值類型來說,棧中直接保存數(shù)據;對于引用類型來說,棧中保存的是“對象的地址”),而是棧本身的地址        static void M1(ref int m)        {            m++;        }    }    class Person    {        public string Name { get; set; }        public int Age { get; set; }        public string Email { get; set; }    }

1234

作者: WM/Johnson


上一篇:solr熱身

下一篇:特性驗證實體

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蓝山县| 资溪县| 工布江达县| 克拉玛依市| 湄潭县| 宜春市| 澄江县| 永登县| 承德市| 桐梓县| 紫金县| 佛坪县| 保德县| 磴口县| 公主岭市| 南投县| 岢岚县| 三原县| 治县。| 常山县| 饶阳县| 新化县| 德昌县| 洛川县| 定远县| 华亭县| 松江区| 汨罗市| 贵南县| 安图县| 明星| 宁德市| 宜丰县| 乌海市| 措美县| 阳朔县| 翼城县| 宁城县| 鄂尔多斯市| 南丰县| 梓潼县|