1. 程式人生 > >裝箱和拆箱 (判斷兩個型別轉換是否構成裝箱或拆箱,要看它們是否存在繼承關係)

裝箱和拆箱 (判斷兩個型別轉換是否構成裝箱或拆箱,要看它們是否存在繼承關係)

<>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace 裝箱和拆箱
{
    //在做開發的時候要儘量避免裝箱和拆箱。
    class Program
    {
        //判斷一個型別轉換是否構成了裝箱或者拆箱。有個前提就是:這兩個型別是否存在繼承的關係。如果存在繼承關係則有可能發生裝箱或者拆箱。如果不存在繼承關係,他們一定不會發生裝箱或者拆箱。
        static void Main(string[] args)
        {
            int x = 5;
            object o = x; //將值型別轉換成引用型別,這是裝箱
            int y = (int)o; //將引用型別轉換成值型別,這是拆箱

            ArrayList list = new ArrayList();
            for (int i = 0; i < 10000; i++)
            {
                //Add(object value) 注意:Add這個方法的引數接收的是一個object型別的資料,根據里氏轉換定律。一個地方需要一個父類,那麼可以將一個子類給它。因為子類可以隱式的轉換成父類。
                list.Add(i); //這是一個裝箱過程。將一個值型別的i 轉換成object型別存放到了list這個泛型集合中了。因為i的值是小於10000的。那麼這裡將i從0開始到9999 總共將10000個數字存放到了list中。也就意味著 做了10000次的裝箱。極大的影響了系統的效能。
            }



            //--------以下這種情況不構成拆箱操作。因為string 與int型別不構成繼承關係。

            string str = "123";
            int a = Convert.ToInt32(str); //將一個引用型別強制轉換成一個值型別。



            //---------以下情況構成了裝箱操作。

            int b = 10;
            IComparable ii = b; //IComparable是一個介面,介面是一個引用型別。而int型別是繼承了IComparable介面的。所以將一個值型別的b轉換成一個引用型別 ii 那麼就構成了裝箱了。

        }
    }
}


相關推薦

裝箱 判斷型別轉換是否構成裝箱它們是否存在繼承關係

<> using System; using System.Collections.Generic; using System.Linq; using System.Text; using

html div三列布局佔滿全屏左右列定寬或者百分比、中間自動適應div在父div中居底

     div佈局: <div>             <div id="header">                 上                 <div id="h_menu">                

判斷字符串是否有相同字符每個字母的個數也相同組成

bbc 初始 pre util abc 字符 sta ray public 初始化一個字符串數組 每個位賦值為0 即 0000 0000 0000 0000...對第一個字符串 s1 轉成的每個字節 如425154 在對應位置上加1 如4則在 第四的位置加1 0001

設計一個演算法刪除遞增有序連結串列中值大於mink且小於maxk的所有元素minkmaxk是給定的引數其值可以表中的元素相同也可以不同

語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li

判斷字串不同的json是否等價附:將等價但是不同json調整成同一字串的方法

在做軟體和網路測試的時候,經常需要對排版格式與內部結構順序不固定的json物件進行分析對比,而json基本語法下,同樣的一個json物件,字串變化可以千變萬化,json內各個層欄位順序調轉,排版變化,打亂順序的json陣列+多層巢狀,等等各種因素,都會造成對比上的困難。 以下由淺及深談談幾種

編寫一個Java應用程式當用戶在輸入對話方塊中輸入日期後日期格式為YYYYMMDD如1999年1月12日應輸入為19990112程式將判斷日期的先後順序以及日期之間的間隔天數

編寫一個Java應用程式,當用戶在輸入對話方塊中輸入兩個日期後(日期格式為YYYYMMDD, 如1999年1月12日應輸入為19990112), 程式將判斷兩個日期的先後順序, 以及兩個日期之間的間隔天數(例如1999年1月1日和1999年1月2日之間的間隔是1天。  

JavaScript中判斷值是否相等各種情況

學的還沒有那麼深,有錯誤或者我的理解有問題的話還請告訴我,謝謝   1、一般情況下,將兩邊儘可能都轉為number型別資料,再進行比較,而不是轉為Boolean型 console.log(true==2);   // false   如果兩邊都

實現一個類把冒泡插入封裝到函式中去宣告函式一個是冒泡一個是插入且進行呼叫除錯

實現一個類,把冒泡和插入封裝到兩個函式中去(宣告兩個函式,一個是冒泡,一個是插入),且進行呼叫和除錯 import java.util.Arrays; /* * 實現一個類,把冒泡和插入封裝到兩個函式中去(宣告兩個函式,一個是冒泡,一個是插入),且進行呼叫和除錯 */ public class E

布隆過濾器Bloom Filter檔案分別有100億字串我們只要1g的記憶體如何找到檔案的交集?分別給出精確演算法近似演算法?

  給兩個檔案,分別有100億個字串,我們只要1g的記憶體,如何找到兩個檔案的交集?分別給出精確演算法和近似演算法? 精確演算法:   我們可以建立1000個檔案,運用雜湊函式先將檔案1的字串儲存在對應的檔案中,之後再檔案2中取元素,通過雜湊函式計算出雜湊地址

判斷單鏈表是否相交若相交求節點連結串列不帶環

先理解一下題目的意思,單鏈表的相交和普通兩條線的相交一樣嗎? 所以當我們把其換成節點就可以變成下面這樣: 先判斷連結串列是否相交,我們可以運用兩個連結串列相交後就變成了一條連結串列這個特性來判斷,因為如果兩條連結串列相交,那麼這兩條連結串列的最後一個節點一定

判斷子串判斷字串是否由另一個旋轉而來的問題

題目:假定又一個IsSubString,可檢查一個單詞是否為其他字串的子串。給定兩個字串s1和s2,請編寫程式碼檢查s2是否為s1旋轉而成,要求只能呼叫一次IsSubString。(比如,waterb

二叉樹面試題---判斷二叉樹結構是否相同

一、首先這個問題是判斷二叉樹的結構是否相同,所以這就和二叉樹的資料的值無關。只需要判斷結構;判斷兩個二叉樹的結構是否相同很簡單。 採用遞迴的思想: (1)如果兩棵二叉樹都為空,返回真 (2)

java實現---判斷連結串列是否相交若相交求交點假設連結串列不帶環

有兩個單鏈表,判斷它們是否相交,若相交,求交點 第一步判斷兩個連結串列是否相交 第二步求交點 第一步判斷兩個連結串列是否相交 如果兩個連結串列相交,那麼它們的

位運算筆試練習——判斷整數32位的二進位制表達有多少個位不同?

實習生筆試題 問題引入 1、二進位制表達方式——位運算 2、有多少位不同——好像只能一位一位的取比較 3、如何取得一個數的每一位呢? 4、比較完一位之後,能否把這一位去掉,比較剩下的,然後重複整個過程呢? 思考一: 判斷一個整數二進位制表達中有

**題目描述:長度不超過80的字串串中包括大寫、小寫空格字元去掉空格字元並忽略大小寫後判斷字串是否相等。

題目描述:兩個長度不超過80的字串,串中包括大寫、小寫和空格字元,去掉空格字元並忽略大小寫後判斷兩個字串是否相等。 輸入描述:第一行輸入的是測試資料的組數n,每組測試資料佔兩行,第一行是第一個字串S1,第二行是第二個字串S2。 輸出描述:如果兩個字串相等,則輸出YES,否則輸出NO。

Java中如何判斷物件是否相等Java equals and ==

public class EqualTest {public static void main(String[] args) { Person p1 = new Person(10, "張三"); Person p2 = new Person(10, "張三"); System.out.println("

判斷矩形是否相交C++)

最近在研究opencv識別紅綠燈的任務,用的是機器學習+影象處理的方法,但有個麻煩的問題就是誤識別率很高,為了把這些誤識別出的物體給過濾點,我想到了通過顏色佔比的方法來過濾,結果是可以過濾點一部分,但不能完全過濾。沒辦法,接下來有打算用紅綠燈框匹配燈的辦法來過濾,這就涉及

SQL SERVER 儲存過程事務通過值自動計算第三值並更新

SQL SERVER 儲存過程和事務 前提:再實際業務中,有一個需求,即是根據A欄位和B欄位計算C欄位(批量的)考慮用的事務和WHILE迴圈,做成儲存過程,然後作業,定時10分鐘更新一次。其中A欄位的值,又是根據其他4個欄位為一組求的平均值。 那麼該儲存過