2013年4月8日 星期一

使用as來轉換

下面簡單列子 示範利用簡單的as將object轉換指定型態


private void button1_Click(object sender, EventArgs e)
        {
            string Q = "TEST";//建立一個字串
            object W = Q;//字串轉物件
            string A = W as string;//物件轉回字串 判斷是否成功
            if (A != null)//A不等於null
            {
                MessageBox.Show("OK");//成功 show出ok
            }
            else//A等於null
                MessageBox.Show("不OK");
        }




再來,來看個轉型不成功null的例子
private void button1_Click(object sender, EventArgs e)
        {
            int Q=1;
            object W = Q;
            string A = W as string;
            if (A != null)
            {
                MessageBox.Show("OK");
            }
            else
                MessageBox.Show("不OK");//在判斷時無法成功轉型因此A還是NULL
        }

嘗試轉成型別int 或 double 數值型態valueType
結果發現 編譯器SHOW出(int is a non-nullable value type)
才驚覺發現 原來有使用上的限制
原因是轉換過程是if做null判斷
所以不可以使用valueType數值類型 比如說 int double 之類的
不然連執行都不能執行 編譯將會出現錯誤

下面示範 連執行都不能執行的 列子

private void button1_Click(object sender, EventArgs e)
        {
            int Q=1;
            object W = Q;
            int A = W as int;
            if (A != null)
            {
                MessageBox.Show("OK");
            }
            else
                MessageBox.Show("不OK");
        }

沒有留言:

張貼留言