[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 關鍵字檢查溢位,用一點點的性能換取更健康的程式是值得的!




留言
張貼留言