为什么这在 VB.Net 中有效:
Dim ClipboardStream As New StreamReader(
CType(ClipboardData.GetData(DataFormats.CommaSeparatedValue), Stream))
但这会在 C# 中引发错误:
Stream is a Type, which is not valid in the current context
ClipboardStream = new StreamReader(Convert.ChangeType(
ClipboardData.GetData(DataFormats.CommaSeparatedValue), Stream));
老实说,我并不是 100% 了解类型转换,我只在代码片段中使用过它们,现在我正在尝试将简单的 VB 代码片段转换为 C# 版本...
最佳答案
ChangeType
接受一个 Type
作为第二个参数,所以你应该写成 typeof(Stream)
。 typeof(Stream)
评估为表示类型 Stream
的 Type
实例。仅在那里使用 Stream
是行不通的,因为它不会计算出一个值。这不是一个表达式。
无论如何,你不应该在这里使用ChangeType
,你应该cast,这是C# equivalent CType
:
ClipboardStream = new StreamReader((Stream)ClipboardData.GetData(DataFormats.CommaSeparatedValue));
关于c# - VB 与 C# — CType 与 ChangeType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112541/