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

首頁 > 學院 > 開發設計 > 正文

ref和out的區別,值類型和引用類型的使用

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

ref和out的區別,值類型和引用類型的使用

今天剛剛明白ref和out的區別,只限于個人理解如有不同請賜教,謝謝

首先我感覺ref和out是針對于值類型來說,以前一直認為是針對于引用類型看下面的一段代碼

1.首先結果 i=0;ints[0]=0 i=0;ints[0]=100

2.ints作為一個引用類型在傳入方法后,對ints[0]進行了賦值,是將引用類型的地址引用到了100這個值得堆上,

3.而值類型i引入到另外一個方法后進行賦值不會對原有字符串進行改變

4.ref就是為了解決這個問題,讓值類型能夠和引用類型一樣在傳入方法后值會進行改變

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Demo{    class PRogram    {        static void SomeFunction(int[] ints, int i)        {            ints[0] = 100;            i = 100;        }        static void Main(string[] args)        {            int i = 0;            int[] ints = { 0, 1, 2, 3, 4 };            Console.WriteLine("i=" + i);            Console.WriteLine("ints=" + ints[0]);            SomeFunction(ints, i);            Console.WriteLine("i=" + i);            Console.WriteLine("ints=" + ints[0]);            Console.ReadKey();        }    }}
View Code

5.將代碼添加上ref 結果:i=0;int[0]=0;i=100;ints[0]=100

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Demo{    class Program    {        static void SomeFunction(int[] ints, ref int i)        {            ints[0] = 100;            i = 100;        }        static void Main(string[] args)        {            int i = 0;            int[] ints = { 0, 1, 2, 3, 4 };            Console.WriteLine("i=" + i);            Console.WriteLine("ints=" + ints[0]);            SomeFunction(ints, ref i);            Console.WriteLine("i=" + i);            Console.WriteLine("ints=" + ints[0]);            Console.ReadKey();        }    }}
View Code

所以我認為ref是對值類型的改變而且和out一樣,在進行傳遞參數的時候對變量進行了初始化。

而out只是在傳遞參數的時候不用進行賦值,但是在調用的方法里面必須進行賦值,負責會報沒被賦值的out參數

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Demo{    class Program    {        static void SomeFunction(int[] ints, out int i)        {            ints[0] = 100;            i = 100;        }        static void Main(string[] args)        {            int i;            int[] ints = { 0, 1, 2, 3, 4 };           //Console.WriteLine("i=" + i);            Console.WriteLine("ints=" + ints[0]);            SomeFunction(ints, out i);            Console.WriteLine("i=" + i);            Console.WriteLine("ints=" + ints[0]);            Console.ReadKey();        }    }}
View Code


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麦盖提县| 河曲县| 容城县| 邢台县| 民丰县| 新泰市| 赫章县| 寿阳县| 教育| 英山县| 龙陵县| 永善县| 即墨市| 大方县| 邵阳县| 冕宁县| 团风县| 贞丰县| 奈曼旗| 达州市| 彭山县| 苍山县| 双桥区| 长武县| 乌审旗| 温泉县| 台安县| 万全县| 洛扎县| 明溪县| 古交市| 新营市| 文昌市| 博兴县| 格尔木市| 基隆市| 太和县| 昔阳县| 涿鹿县| 甘孜县| 开化县|