喜才能轉換值類型,以全球化志願服務青年在C#中的類型或.NET支持的語言 如int是值類型...所以我們可以把它轉換全球化志願服務青年類型才能轉換值類型,以全球化志願服務青年在C#中的類型或.NET支持的語言
2
A
回答
2
這就是所謂的拳擊和拆箱。
int i = 5;
object o = i;
int j = (int)o;
等
2
任何類型的值可以被轉換到參考類型,例如:
int myInt = 5;
object obj = myInt;
9
目的是什麼?
object intAsRef = 32;
是一個int作爲參考類型。但是,這被稱爲拳擊(see here),通常被認爲是東西,以避免,而不是渴望。
在另一方面,如果你想通參考值對象,這樣的方法,然後裏面你需要更改接收方法的簽名和電話,你可以改變它的值:
public void ChangeValueOfInt(ref int input)
{
input = 4;
}
int a = 2;
ChangeValueOfInt(ref a);
//a now equals 4
+1
如果你想在'ref'參數不允許lambda表達式更改值,那麼你不得不使用拳。 – zionpi 2015-04-09 01:58:56
0
1
的過程被稱爲在.NET「拳擊」,它是指這樣的事實,即使值類型繼承的引用類型Object
。在.NET中任何類型都可以轉換爲Object
正是如此:
int myint = 0;
object myIntAsRefType = myInt;
您可以與其他引用類型做到這一點,還有:
Random rnd = new Random();
object rndAsObject = rnd;
之前,你可以使用任何自己的方法或屬性,您必須取消它們裝箱:
if(myIntAsRefType is int)
int myNewInt = myIntAsRefType as int;
或者:
if(myIntAsRefType is int)
int myNewInt = (int)myIntAsRefType;
0
隨着裝箱和拆箱的幫助下,你可以將任何值類型引用類型。拳擊可以讓你把你的價值類型包裝在對象和UnBoxing相反。
拳擊
int i = 10;
Object obj = (Object)i;
拆箱
int j=(int)obj;
相關問題
- 1. 使用變量全球化志願服務青年另外一類在PHP
- 2. MVC 4錯誤對象全球化志願服務青年
- 3. MPAndroidChart空對象全球化志願服務青年
- 4. 理解JavaScript函數調用和全球化志願服務青年
- 5. KD應用不建,未定義全球化志願服務青年到Solid庫
- 6. c語言類型轉換
- 7. 如何保持全球化志願服務青年到子線程創建一個實例
- 8. 放置位置以及如何全球化志願服務青年與Java項目TEXTFILES
- 9. 的ServiceHost僅支持類服務類型
- 10. 轉換TL語言(mtproto)類型到C#
- 11. 對象全球化志願服務青年未設置爲對象的異常的情況下
- 12. Elixir中的語言類型轉換
- 13. 如何支持名義類型語言的結構類型?
- 14. 谷歌Places API所缺少的ID和全球化志願服務青年響應
- 15. 「ServiceHost僅支持類服務類型」
- 16. ServiceHost僅支持類服務類型
- 17. c或C++類型轉換
- 18. 弱類型或強類型語言
- 19. 動態類型語言中的類型
- 20. 從'DBNull'類型到'Short'類型的轉換無效。在.NET .NET
- 21. .NET轉換類型到子類型
- 22. GWT支持類型轉換嗎?
- 23. C++中的類型轉換
- 24. C#中的類型轉換#
- 25. Web服務跨語言參數類型
- 26. 服務類型IHostBufferPolicySelector不支持
- 27. 練成:沒有VBA:全球化志願服務青年或連結細胞到遠程服務器的數據與可變
- 28. 類型安全服務getter類(返回參數化類型)
- 29. 靜態類型語言是否可以支持異構列表?
- 30. C#泛型類型轉換Decimal轉換爲Float - 「不能轉換類型'T1'? 'T2'「
但是記住,這是_not_等同於C結構'INT * OBJ = myInt'。盒裝參考是價值的_copy_,所以你不能突變原,而C基準實際上指向本地的內存地址,並可能允許原來的突變。如果您將指針傳遞到堆棧中的值並在調用方法退出後繼續使用,那麼也可能會讓應用程序崩潰。對於最後一個原因(除其他外),.NET不允許捕獲對值類型的引用並且_persisting_它。 – 2010-08-26 13:58:53