2012-05-02 58 views
4

這部分是咆哮和部分真正的好奇心。有誰知道爲什麼System.Windows.Forms.DataObject's SetText(String)方法不接受空字符串作爲其參數?它聲明這會拋出一個ArgumentNullException(即使它實際上不是null)。爲什麼DataObject.SetText(String)不接受空字符串?

我可以理解它不接受空值,但它似乎很不尋常,它不會允許空字符串。有沒有我在這裏失蹤的東西,還是這只是一個API設計者的任意決定?

+0

可能這是一個COM函數的封裝,它將在空字符串上失敗。 – Oded

+1

我的猜測是,這是因爲'GetText'方法'SetText'的副本返回'String.Empty',表示數據對象不包含UnicodeText格式的數據。本質上,'String.Empty'在這種情況下扮演'null'的角色,所以你需要讓'SetText'不接受'String.Empty'。 – dasblinkenlight

回答

0

sourcesays

public virtual void SetText(string textData, TextDataFormat format) 
{ 
    if (!string.IsNullOrEmpty(textData)) 
    { 
     // 
    } 
    else 
    { 
     throw new ArgumentNullException("textData"); 
    } 
} 

但是這不是回答你的問題,你問爲什麼是。瀏覽源代碼我無法找到答案,也無法在MSDN快速掃描期間找到答案。

+1

感謝編碼錯誤鏈接,順便說一句 - 你現在已經把我放在了一個可怕的(和美妙的)遞歸的道路上,閱讀越來越多的傑夫的帖子。 :) – Tim

相關問題