boxing

    29熱度

    3回答

    最近我寫了一個Java項目,並注意到一個非常奇怪的功能,雙/雙實施。 Java中的double類型有兩個0,即0.0和-0.0(有符號零)。奇怪的是: 0.0 == -0.0 評估爲true,但: new Double(0.0).equals(new Double(-0.0)) 評估爲false。有沒有人知道背後的原因?

    4熱度

    3回答

    在Nullable micro-optimizations, part one,埃裏克提到Nullable<T>有一個奇怪的拳擊行爲不能通過類似的用戶定義類型實現。 哪些特殊功能的C#語言的贈款,以預定義的Nullable<T>類型?特別是那些不能在MyNullable類型上工作的。 當然,Nullable<T>有特殊的語法糖T?,但我的問題更多地是關於語義。

    2熱度

    3回答

    你覺得下面的代碼行?: String s= "10.0"; float f = Float.valueOf(s).floatValue();//1 是否有必要呢?爲什麼使用這樣的語法會比使用更好: float f = Float.valueOf(s);//2 利用自動裝箱功能它仍然給出相同的結果。 總之我的問題是:爲什麼要選擇第一個語法而不是第二個語法?他們完全一樣嗎?

    2熱度

    2回答

    我已經做了一些關於這方面的研究,這似乎很不可能,但沒有一個答案已經足夠具體到我的問題。我目前有一個Stack<object>,我推送多個不同類型的對象。在我推動它們之前,我將它們裝箱到object,以便它們接受它們。是否有任何可能的方法自動拆箱的對象到原來的unboxed類型?

    2熱度

    1回答

    假設下面的委託 「呼叫者」 簽名: FuncCaller<T>(Func<T, bool> predicate) 和匹配方法: bool MyFunc(object o) 當T是引用類型,我可以調用MyFunc隱含像這樣: FuncCaller<String>(MyFunc) // valid 相反,當T是值類型,我打電話MYFUNC時含蓄地得到一個編譯錯誤: FuncCaller<I

    2熱度

    1回答

    以下代碼導致InvalidCastException。 object x = (short) 1; int y = (int) x; 我知道我能投x先來個short,然後到int,儘管這不是一個選項,作爲裝箱值是不知道的類型(但它是definetly比int小)。 如何解開異常時拆開一個類型,大於盒裝類型? 編輯: 我使用dynamic型(與所有對性能的影響)

    1熱度

    2回答

    我最近的代碼是包含很多boxing and unboxing,因爲我的許多變量都是在運行時解決的。 但我讀過拳擊和取消裝箱在計算上非常昂貴,所以我想問問是否有任何其他方法來裝箱/取消箱類型? 這是一個很好的使用方法嗎?

    4熱度

    4回答

    我試着去了解這段代碼: double b = 3; object o = b; Console.WriteLine(o.Equals(3));//false Console.WriteLine(o.Equals(b));//true Console.WriteLine(o == (object)b);//false 每一個新的拳擊使物體B的不同的參考? 如果1.爲真,爲什麼o.Equa

    0熱度

    1回答

    讓我首先告訴我知道MSDN on boxing and unboxing的內容,並在SO上看到關於拳擊和拆箱的帖子。我也明白爲什麼拳擊是有用的,它在高水平上有什麼作用,並曾多次與IL合作......所以請不要猶豫。 我想知道的是如何拳擊和拆箱的作品恰好,最好有證據。我的意思是: 是否運行時確實複製堆上的數據爲每個拳擊/拆箱操作或它使用像引用計數技巧? 是否與std收集堆垃圾箱裝值。垃圾收集器還是它

    0熱度

    1回答

    對不起第二次問專業化,但我還沒有很好的瞭解到底是怎麼回事... 所以,我有一個項目(與AI的Gomoku遊戲),並且我決定在它的熱門部分使用我自己的簡單和髒的@specialized ad-hoc集合,因爲我必須在沒有裝箱的情況下存儲原始類型。問題是,這並不能真正幫助,因爲在jvisualvm的採樣我清楚地看到 scala.runtime.BoxesRunTime.boxToShort() 吃