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

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

+=運算符少了一次計算?

2019-11-14 16:49:12
字體:
來源:轉載
供稿:網友

偶然看到MSDN關于 += 賦值運算符 的備注:

使用 += 賦值運算符的表達式,如

x += y

等效于

x = x + y

不同的是 x 只計算一次。 + 運算符的含義取決于 x 和 y 的類型(對于數值操作數,其含義為相加;對于字符串操作數,其含義為串聯,等等)。

不能直接重載 += 運算符,但用戶定義的類型可重載 + 運算符(請參見 Operator)。

+= 運算符還用于指定響應事件時要調用的方法;這類方法稱為事件處理程序。 在此上下文中使用 += 運算符稱為“訂閱事件”。 有關更多信息,請參見 如何:訂閱和取消訂閱事件(C# 編程指南) 委托(C# 編程指南)

以上來源:MSDN


 但上面說明使用 += 運算符時,x只計算一次…

新建一Demo:

    static void Demo()    {        int x, y;        x = 1;        y = 2;        x = x + y;        Console.WriteLine(x);        x = 1;        y = 2;        x += y;        Console.WriteLine(x);    }

反編譯IL代碼:

.method PRivate hidebysig static     void Demo () cil managed {    // Method begins at RVA 0x28a4    // Code size 32 (0x20)    .maxstack 2    .locals init (        [0] int32 x,        [1] int32 y    )    IL_0000: nop    IL_0001: ldc.i4.1    IL_0002: stloc.0    IL_0003: ldc.i4.2    IL_0004: stloc.1    IL_0005: ldloc.0    IL_0006: ldloc.1    IL_0007: add    IL_0008: stloc.0    IL_0009: ldloc.0    IL_000a: call void [mscorlib]System.Console::WriteLine(int32)    IL_000f: nop    IL_0010: ldc.i4.1    IL_0011: stloc.0    IL_0012: ldc.i4.2    IL_0013: stloc.1    IL_0014: ldloc.0    IL_0015: ldloc.1    IL_0016: add    IL_0017: stloc.0    IL_0018: ldloc.0    IL_0019: call void [mscorlib]System.Console::WriteLine(int32)    IL_001e: nop    IL_001f: ret} // end of method Program::Demo
//本文地址:http://www.survivalescaperooms.com/Interkey/p/3590631.html

但其IL代碼一樣.

不僅是 += 運算符,-= 運算符………|= 運算符 都是x只計算一次。

那為何會只計算一次呢?糾結…

期待后續有個結果…[暫時未解] 


推薦一個非常實用的文件及文件夾比較工具: Beyond Compare。

使用 Beyond Compare 可以很方便的對比出兩個文件夾或者文件的不同之處。并把相差的每一個字節用顏色加以表示,查看方便。并且支持多種規則對比。對軟件漢化者來說,這絕對是一款不可多得的工具。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永济市| 吴旗县| 成都市| 长子县| 嘉荫县| 禹州市| 佛冈县| 大同市| 慈利县| 红河县| 武胜县| 保山市| 黄陵县| 贵定县| 青铜峡市| 道真| 东安县| 五大连池市| 烟台市| 鄂尔多斯市| 萍乡市| 抚松县| 南溪县| 稻城县| 阿勒泰市| 广安市| 遂平县| 罗田县| 陆丰市| 百色市| 北安市| 台东县| 岢岚县| 东乡族自治县| 宁强县| 海淀区| 大连市| 铜鼓县| 开封县| 平度市| 时尚|