2012-05-02 5 views
4

Ceci est partiellement une diatribe et une curiosité partiellement authentique. Est-ce que quelqu'un sait pourquoi la méthode System.Windows.Forms.DataObject's SetText(String) n'accepte pas une chaîne vide comme argument? Il indique que ceci lancera une ArgumentNullException (même si elle n'est pas réellement nulle).Pourquoi DataObject.SetText (String) n'accepte-t-il pas de chaîne vide?

Je pourrais le comprendre ne pas accepter une valeur nulle, mais il semble très inhabituel qu'il ne permettrait pas une chaîne vide. Y at-il quelque chose qui me manque ici, ou était-ce juste une décision arbitraire d'un concepteur d'API?

+0

Il s'agit probablement d'un wrapper autour d'une fonction COM qui échouera sur des chaînes vides. – Oded

+1

Je suppose que c'est parce que la contrepartie de 'SetText', la méthode' GetText', renvoie 'String.Empty' pour indiquer que l'objet de données ne contient pas de données au format UnicodeText. Essentiellement, 'String.Empty' joue le rôle de' null' dans ce cas, vous devez donc faire en sorte que 'SetText' n'accepte pas' String.Empty'. – dasblinkenlight

Répondre

0

Le sourcesays:

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

Mais ce n'est pas la réponse à votre question, vous demandez pourquoi c'est. En parcourant la source, je n'ai pas trouvé de réponse, ni lors d'une analyse rapide de MSDN.

+1

Merci pour le lien codinghorror, btw - vous m'avez mis sur un chemin récursif terrible (et merveilleux) de lire de plus en plus de messages de Jeff. :) – Tim

Questions connexes