需要解释为什么Clipboard.SetText("")不等于Clipboard.Clear()

时间:2014-04-10 15:49:06

标签: c# clipboard

我正在传递一篇关于Microsoft的Clipboard.SetText()方法的文章: Clipboard.SetText Method (String)

我意识到如果字符串为空(“”),则会抛出异常。

为什么会那样?为什么它不等于Clipboard.clear()

我很好奇。

2 个答案:

答案 0 :(得分:1)

与许多方法一样,它将取决于实现。

在这种情况下,实施起来很差。我个人认为在提供非ArgumentNullException的值时抛出null是明智的,如文档链接中所述。

然而,将空字符串存储在剪贴板中是没有意义的,因此可能会设置检查以阻止这种情况发生,并使每个人的生活更轻松。

假设使用标准Windows API来调用剪贴板,如果提供的值为NULL,则实际实现会导致不同的行为,因为这意味着当您“粘贴”或检索内容时将访问该值。

由于剪贴板可以根据剪贴板中指定的类型执行数据转换,理论上可能存在将空字符串解释为NULL或反之亦然的问题。

这是推测,因为文档中没有任何详细信息。你必须测试它才能看到会发生什么。一些有趣的信息可以在 SetClipboardData function (MSDN)中找到。

答案 1 :(得分:1)

例如,考虑getDataObjectnull与保存空字符串的数据对象的不同行为。