[C#] [關鍵字] 適當使用 checked ,能省下10倍除錯時間!  -JY. MN 軟實力

介紹

        在進行數字運算時,由於變數的類型不同,所以數值得值域也不同。如果變數中的數值超過變數的值域,則會有溢位的情況發生,出現溢滿時會影響變數中數值的準確性。怎樣有效防止溢位呢?可以使用 checked 關鍵字來檢查是否有出現溢位。示範介面如下:


說明

        此示範中表現出溢位所使用的數值類型為 byte,byte 類型的值域為 0 ~ 255,所以如果 byte 類型變數內的值高於 255 或者小於 0 都會出現溢位。以下程式碼中使用 checked 關鍵字能夠有效的處理溢位錯誤。如果不使用 checked 關鍵字,如出現數值溢位時將不會出現任何異常訊息,這時將會有很恐怖的事情發生,程式中數值不正確,但程式跟使用者都沒有發現,大家想一想後續會發生怎樣的事情呢?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EX_Checked
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn_Cacul_Click(object sender, EventArgs e)
        {
            byte bt_One, bt_Two;    // 定義兩個 byte 類型變數
            if (byte.TryParse(txb_AddOne.Text, out bt_One) &&   // 為兩個 byte 類型變數賦值
                byte.TryParse(txb_AddTwo.Text, out bt_Two))
            {
                try
                {
                    checked
                    {
                        bt_One += bt_Two;   // 使用 checked 關鍵字判斷是否有溢出
                    }
                    txb_Result.Text = bt_One.ToString();    // 相加後輸出結果
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error!");
                }
            }
            else
            {
                MessageBox.Show("請輸入255以內的數字");
            }
        }
    }
}

結論

        使用 checked 關鍵字可能對於程式效能上會有所影響,但是只要用在程式關鍵位置上合理的使用 checked 關鍵字檢查溢位,用一點點的性能換取更健康的程式是值得的!

留言

熱門文章