第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不確定按引用傳遞是否有效

不確定按引用傳遞是否有效

C#
慕無忌1623718 2021-10-24 19:50:25
我創(chuàng)建了一個名為GamblersDice 的娛樂庫。我正在嘗試對其進行微優(yōu)化,但不確定我是否做得對。我想要的是在創(chuàng)建模具時使用對全局Random對象的引用。我認為它不起作用的原因是測試GamblersDie(random, int)和GamblersDie(ref random, int)花費幾乎相同的時間超過 10,000,000 次迭代(測試項目在 repo 中)。如果你不想瀏覽 repo,這里是我的構造函數(shù):public class GamblersDie : Die{    private Random _rnd;    public int[] Weight { get; private set; }    public GamblersDie() : this(new Random()) { }    public GamblersDie(int size) : this(new Random(), size) { }    public GamblersDie(params int[] weights) : this(new Random(), weights) { }    public GamblersDie(Random rnd) : this(ref rnd) { }    public GamblersDie(Random rnd, int size) : this(ref rnd, size) { }    public GamblersDie(Random rnd, params int[] weights) : this(ref rnd, weights) { }    public GamblersDie(ref Random rnd) : this(ref rnd, 6) { }    public GamblersDie(ref Random rnd, int size) {        _rnd = rnd;        Weight = new int[size];        for (int i = 0; i < Weight.Length; i++)        {            Weight[i] = 1;        }    }    public GamblersDie(ref Random rnd, params int[] weights) : this(ref rnd, weights.Length)    {        for (int i = 0; i < Weight.Length; i++)        {            Weight[i] = weights[i];        }    }}就像我說的,這只是為了好玩。我想對它進行微優(yōu)化,只是因為它可能是可能的。我的另一個問題是關于構造函數(shù)鏈接。乍一看它可能令人困惑,我想知道它是否是某種反模式。
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

變量/參數(shù)包含什么?他們持有價值觀。它們存儲的值的性質是什么?對于 Value types( struct),它們存儲值本身

但是對于引用類型 ( class),它們存儲一個引用;它們不存儲位于其他地方的對象本身。

正是這些被復制-在默認通按值的參數(shù)傳遞在C#。復制引用與創(chuàng)建引用的對象的副本不同。因此,即使沒有ref,您也在處理方法內部和外部的單個對象。顯然,對象的任何更改都將在外部可見。

您只需要refa) 要重新分配參數(shù)并且該重新分配應該是外部可見的,或者 b) 您正在改變 Value 類型并且該突變應該是外部可見的。


而且,如果上述內容不夠清楚,我將在此處明確說明 -Random是引用類型。


額外閱讀:Eric Lippert 的《關于價值類型的真相》,您可能還沒有準備好,但確實有助于消除一些您可能會在此過程中遇到的常見誤解。


查看完整回答
反對 回復 2021-10-24
  • 1 回答
  • 0 關注
  • 209 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號