2012-05-02 3 views
4

이것은 부분적으로 호언 장담이며 부분적으로 진정한 호기심입니다. 누구도 왜 System.Windows.Forms.DataObject's SetText(String) 메서드가 인수로 빈 문자열을 허용하지 않는지 알고 있습니까? ArgumentNullException을 throw합니다 (실제로 null이 아니더라도).DataObject.SetText (String)에서 빈 문자열을 허용하지 않는 이유는 무엇입니까?

null 값을 허용하지 않는다는 것을 이해할 수 있지만 빈 문자열을 허용하지 않는 것은 매우 드문 것처럼 보입니다. 여기에 누락 된 것이 있습니까? 아니면 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

codinghorror 링크를 주셔서 감사합니다. btw - 이제 Jeff의 게시물을 점점 더 많이 읽는 끔찍한 (멋진) 재귀 적 경로에 나를 설득 시켰습니다. :) – Tim

관련 문제