這部分是咆哮和部分真正的好奇心。有誰知道爲什麼System.Windows.Forms.DataObject's SetText(String)方法不接受空字符串作爲其參數?它聲明這會拋出一個ArgumentNullException(即使它實際上不是null)。爲什麼DataObject.SetText(String)不接受空字符串?
我可以理解它不接受空值,但它似乎很不尋常,它不會允許空字符串。有沒有我在這裏失蹤的東西,還是這只是一個API設計者的任意決定?
這部分是咆哮和部分真正的好奇心。有誰知道爲什麼System.Windows.Forms.DataObject's SetText(String)方法不接受空字符串作爲其參數?它聲明這會拋出一個ArgumentNullException(即使它實際上不是null)。爲什麼DataObject.SetText(String)不接受空字符串?
我可以理解它不接受空值,但它似乎很不尋常,它不會允許空字符串。有沒有我在這裏失蹤的東西,還是這只是一個API設計者的任意決定?
public virtual void SetText(string textData, TextDataFormat format)
{
if (!string.IsNullOrEmpty(textData))
{
//
}
else
{
throw new ArgumentNullException("textData");
}
}
但是這不是回答你的問題,你問爲什麼這是。瀏覽源代碼我無法找到答案,也無法在MSDN快速掃描期間找到答案。
感謝編碼錯誤鏈接,順便說一句 - 你現在已經把我放在了一個可怕的(和美妙的)遞歸的道路上,閱讀越來越多的傑夫的帖子。 :) – Tim
可能這是一個COM函數的封裝,它將在空字符串上失敗。 – Oded
我的猜測是,這是因爲'GetText'方法'SetText'的副本返回'String.Empty',表示數據對象不包含UnicodeText格式的數據。本質上,'String.Empty'在這種情況下扮演'null'的角色,所以你需要讓'SetText'不接受'String.Empty'。 – dasblinkenlight