麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

c# - 外部對象作為參數調用方法時需要注意的問題

2019-11-14 11:31:32
字體:
來源:轉載
供稿:網友

我們在c#中調用方法的時候,是否曾擔心過我們傳進去的參數會被修改,或者擔心其不被修改;本文介紹了常見的幾種情況,并做了代碼測試,可以做個參考。

測試方法:

1. 定義兩個類,IntClass(僅包含一個int類型的屬性)及StringClass(僅包含一個string類型的屬性)。

2. 測試時,定義四個分別為以下類型:int,string,IntClass,StringClass的變量。

3. 對于每一個變量,定義兩個方法(帶ref及不帶ref關鍵字),在方法中修改參數的值;4個變量共計8個方法。

4. 觀察每次方法調用,是否對方法調用之外的變量產生影響。

測試代碼:

namespace RefTest{    public class IntClass    {        public int I { get; set; }    }    public class StringClass    {        public string S { get; set; }    }    class PRogram    {        public static void IntTest(int i)        {            i++;        }        public static void IntTest2(ref int i)        {            i++;        }        public static void IntClassTest(IntClass i)        {            i.I++;        }        public static void IntClassTest2(ref IntClass i)        {            i.I++;        }        public static void StringTest(string str)        {            str += " hello";        }        public static void StringTest2(ref string str)        {            str += " hello";        }        public static void StringClassTest(StringClass str)        {            str.S += " hello";        }        public static void StringClassTest2(ref StringClass str)        {            str.S += " hello";        }        static void Main(string[] args)        {            int i = 3;            string str = "hi ";            IntClass ic = new IntClass() { I = 3 };            StringClass sc = new StringClass() { S = "hi " };            IntTest(i);               // i 不會被修改            IntTest2(ref i);          // i 會被修改            IntClassTest(ic);         // ic.I 會被修改            IntClassTest2(ref ic);    // ic.I 會被修改            StringTest(str);          // str 不會被修改            StringTest2(ref str);     // str 會被修改            StringClassTest(sc);      // sc.S 會被修改            StringClassTest2(ref sc); // sc.S 會被修改        }    }}

測試結果:

結論:

1. 如果方法參數是類,則會被當作引用類型,無論是否使用ref,值都會在調用方法時被修改。 

2. 如果方法參數是基本類型,如int或者string,不使用ref,則值不會在調用方法時被修改;使用ref,值會在調用方法時被修改。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 艹男人的日日夜夜 | 精国产品一区二区三区 | 一级做a爱片性色毛片高清 日本一区二区在线看 | 成年人国产视频 | 中国7777高潮网站 | 久久99精品久久久久久国产越南 | 成年人网站国产 | 涩涩屋av | 国产精品一区二区三区99 | 午夜视频在线观看免费视频 | 一区二区三区黄色 | xxxeexxx性国产 | 成人午夜在线免费观看 | 午夜精品久久久久久久爽 | 欧美a在线 | av在线播放电影 | 欧美性色生活片免费播放 | 看免费黄色大片 | 操碰视频在线观看 | 一分钟免费观看完整版电影 | 成人毛片100免费观看 | 欧美一区在线观看视频 | 国产精品一区二区三区在线看 | 久久影库 | 午夜视频在线观看免费视频 | 亚洲日本欧美 | 91麻豆精品国产91久久久无需广告 | 91麻豆蜜桃一区二区三区 | 久久网页| 久久成人国产精品入口 | 在线播放污 | 亚洲精品午夜电影 | 999插插插| h视频免费在线观看 | 亚洲不卡 | 天天夜夜草| 国产精品久久久久久238 | 澳门一级淫片免费视频 | 欧美日韩亚洲在线观看 | 欧美一级高潮片免费的 | 黄视频网站免费观看 |