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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ref 的貞操

2019-11-17 03:25:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

ref 的貞操

ref 和out的區(qū)別就不說(shuō)了,網(wǎng)上一搜,說(shuō)的都是這個(gè)。

我現(xiàn)在想說(shuō)一點(diǎn):很多人都說(shuō)ref對(duì)引用類型是沒(méi)有意義的。我覺(jué)得這句話完全是憑自己的想象說(shuō)出來(lái)的,都不去翻翻書。

MSDN原文是這么說(shuō)的 “按引用傳遞值類型(如上所示)是有用的,但是ref對(duì)于傳遞引用類型也是很有用的。這允許被調(diào)用的方法修改該引用所引用的對(duì)象,因?yàn)橐帽旧硎前匆脕?lái)傳遞的。下面的示例顯示出當(dāng)引用類型作為ref參數(shù)傳遞時(shí),可以更改對(duì)象本身。”

而他舉了個(gè)字符串的例子,個(gè)人覺(jué)得這個(gè)例子并不好,因?yàn)樽址旧硎且粋€(gè)比較特殊的引用類型,例子如下:

class RefRefExample{    static void Method(ref string s)    {        s = "changed";    }    static void Main()    {        string str = "original";        Method(ref str);        // str is now "changed"    }}我也地ref的這一特征做了一個(gè)小測(cè)試,代碼如下
PRotected void Page_Load(object sender, EventArgs e)    {        myclass myc = new myclass();        myc.Id = 1;        myc.Name = "shit";        Response.Write(myc.Id + "<br>" + myc.Name + "<br>");        //沒(méi)有ref 原變量myc的引用對(duì)象不會(huì)改變        ModifyMyclass(myc);        Response.Write(myc.Id + "<br>" + myc.Name + "<br>");        //有ref 原變量myc的引用對(duì)象改變了,引用了新對(duì)象        ModifyMyclass(ref myc);        Response.Write(myc.Id + "<br>" + myc.Name + "<br>");    }    private void ModifyMyclass( myclass myc)    {        myc = new myclass();        myc.Id = 23;        myc.Name = "new myclass";    }    private void ModifyMyclass(ref myclass myc)    {        myc = new myclass();        myc.Id = 23;        myc.Name = "ref new myclass";    }

  故意寫了一個(gè)myclass類作為參數(shù)傳遞

public class myclass{    private int id;    public int Id { get { return id; } set { id = value; } }    private string name;    public string Name { get { return name; } set { name = value; } }}

  打印結(jié)果:

1shit1shit23ref new myclass

很顯然,ref對(duì)引用類型是有意義的。意義就在于變量本身能不能被改變。沒(méi)有ref的時(shí)候,變量本身是不會(huì)被改變的。只能改變變量引用的那個(gè)對(duì)象。而有了ref,變量本身是可以改變的,當(dāng)然變量引用的對(duì)象更是可以改變了。

所以,由此我也來(lái)想象一把:ref 標(biāo)記的參數(shù)傳遞過(guò)程中,沒(méi)有在棧中聲明新的變量,而傳遞的就是棧原來(lái)的變量本身。不知道這樣理解是否正確,還忘高手門深入剖析!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐陵市| 玉环县| 桐梓县| 临潭县| 德清县| 山东| 鹤岗市| 紫云| 西盟| 保康县| 浮梁县| 台湾省| 盐亭县| 民勤县| 海林市| 景洪市| 嵊州市| 车险| 浮山县| 石狮市| 松潘县| 信丰县| 仙桃市| 诸暨市| 定州市| 札达县| 云梦县| 抚顺市| 庆阳市| 宝山区| 盐池县| 宾川县| 雅江县| 鲁山县| 江永县| 固始县| 梅河口市| 精河县| 阳西县| 内乡县| 务川|