为什么这在VB.Net中起作用:

Dim ClipboardStream As New StreamReader(
    CType(ClipboardData.GetData(DataFormats.CommaSeparatedValue), Stream))

但这在C#中引发错误:


ClipboardStream = new StreamReader(Convert.ChangeType(
    ClipboardData.GetData(DataFormats.CommaSeparatedValue), Stream));

老实说,我并不是100%地了解转换类型,我只在代码片段中使用过它们,现在我正尝试将简单的VB代码片段转换为C#版本...

最佳答案

ChangeType接受Type作为第二个参数,因此您应该编写typeof(Stream)typeof(Stream)求值为代表Type类型的Stream实例。仅使用Stream无效,因为它不求值。这不是表达。

无论如何,您无论如何都不应该在这里使用ChangeType,而应该进行转换,即CTypeC# equivalent:

 ClipboardStream = new StreamReader((Stream)ClipboardData.GetData(DataFormats.CommaSeparatedValue));

关于c# - VB与C#— CType与ChangeType,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50112541/

10-10 18:14