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

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

交換兩個變量而不使用臨時變量

交換兩個變量而不使用臨時變量

HUWWW 2019-10-17 15:38:43
我希望能夠在不使用C#中使用臨時變量的情況下交換兩個變量。能做到嗎?decimal startAngle = Convert.ToDecimal(159.9);decimal stopAngle = Convert.ToDecimal(355.87);// Swap each://   startAngle becomes: 355.87//   stopAngle becomes: 159.9
查看完整描述

3 回答

?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

首先,在C#語言中不使用臨時變量進行交換是一個非常糟糕的主意。


但是為了答案,您可以使用以下代碼:


startAngle = startAngle + stopAngle;

stopAngle = startAngle - stopAngle;

startAngle = startAngle - stopAngle;

但是,如果兩個數(shù)字相差很大,則四舍五入會出現(xiàn)問題。這是由于浮點數(shù)的性質(zhì)。


如果要隱藏臨時變量,可以使用實用程序方法:


public static class Foo {


    public static void Swap<T> (ref T lhs, ref T rhs) {

        T temp = lhs;

        lhs = rhs;

        rhs = temp;

    }

}


查看完整回答
反對 回復(fù) 2019-10-17
?
胡說叔叔

TA貢獻1804條經(jīng)驗 獲得超8個贊

交換兩個變量的正確方法是:


decimal tempDecimal = startAngle;

startAngle = stopAngle;

stopAngle = tempDecimal;

換句話說,使用一個臨時變量。


你有它。沒有聰明的花招,沒有代碼的維護者來詛咒您數(shù)十年,沒有進入The Daily WTF的條目,也沒有花費太多的時間試圖找出為什么需要一次操作,因為從最低的角度來看,甚至語言最復(fù)雜的功能是一系列簡單的操作。


只是一個非常簡單,易讀,易于理解的t = a; a = b; b = t;解決方案。


在我看來,開發(fā)人員嘗試使用技巧來“交換變量而不使用臨時變量”或“ Duff的設(shè)備”,這只是在試圖展示它們的聰明程度(并失敗了)。


我把它們比作那些閱讀粗俗書籍的人,這些閱讀純粹是為了在聚會上顯得更加有趣(而不是擴大視野)。


與簡單的“臨時變量”解決方案(使用算術(shù)/布爾運算而不是在匯編級進行簡單移動)相比,在其中添加和減去的解決方案或基于XOR的解決方案可讀性較低,并且很可能會變慢。


通過編寫高質(zhì)量的可讀代碼來為自己和他人提供服務(wù)。


那是我的怒吼。謝謝收聽 :-)


順便說一句,我很清楚這不能回答您的特定問題(對此我會道歉),但是在SO上有很多先例,人們問過如何做某事,正確的答案是“不要做到”。


查看完整回答
反對 回復(fù) 2019-10-17
?
MMMHUHU

TA貢獻1834條經(jīng)驗 獲得超8個贊

是的,使用此代碼:


stopAngle = Convert.ToDecimal(159.9);

startAngle = Convert.ToDecimal(355.87);

對于任意值,此問題更加困難。:-)


查看完整回答
反對 回復(fù) 2019-10-17
  • 3 回答
  • 0 關(guān)注
  • 634 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號