2010-06-10 13 views
0

我有一個字節數組屬性,它必須是一定的長度。如果長度不正確,我會試着在酒店的set區塊中進行檢查,該區塊會引發ArguementOutOfRange異常。在屬性集塊中執行參數/限制檢查

private const int MY_ARRAY_LENGTH = 25; 
private byte[] m_myArrray; 
public byte[] MyArray 
{ 
    get 
    { 
    return m_myArray 
    } 
    set 
    { 
     if (value.Length != MY_ARRAY_LENGTH) 
     { 
     throw new ArgumentOutOfRange(); 
     } 
     m_myArray = value; 
    } 

這是這種類型的邊界檢查的最佳做法嗎?

回答

1

我沒有看到它的問題。事實上,它看起來像是保護物體內部狀態的最佳和最合適的地方。

只有微不足道的變化可能會在例外情況下提供更多信息(例如,參數名稱 - '值'和範圍 - '長度25')。另外,我沒有任何特定的鏈接/框架,但是您可能會發現聲明式樣式機制以一致的方式自動處理參數檢查。

+1

您還應該檢查該值是否爲空。 – bbudge 2010-06-10 19:00:49

+0

是的,我的ArgumentOutOfRange異常在實際代碼中被刷新了。 – gooch 2010-06-10 19:53:36

+0

關於聲明式斷言的甜文章http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/ – Reddog 2010-06-10 20:23:03