【发布时间】:2017-12-20 07:36:31
【问题描述】:
我正在开发一个 VB => C# 转换器,并且我遇到了一些我不确定是否可以直接转换为 C# 的 VB 代码。
在 VB 中你可以做类似的事情
If {"a", "b", "c"}.Contains("c") Then ...
(让我们假装它有用但并不总是正确的)
我想知道在 C# 中是否有这样的等价物。我能想到的最接近的事情是
if (new object[] {"a", "b", "c"}.Contains("c")) { ... }
我的问题是我必须在 C# 中定义类型,这意味着我必须使用对象 - 因为我正在编写一个翻译器,它需要同样适用于 int 的数组、bool 的数组、自定义类的数组等。我不确定让所有东西都成为对象而不是更具体的类型是个好主意。
有没有办法让编译器找出类型?逻辑上是这样的:(我知道这不行,但逻辑上等价于......)
if (new var[] {"a", "b", "c"}.Contains("c")) { ... }
所以它将数组视为字符串数组,并将 Contains 参数视为字符串?
附带问题:我的印象是上面的 VB 代码将{"a", "b", "c"} 视为string 的数组。它是否正确?上面的 VB 代码是否将“a”、“b”和“c”视为对象 - 如果是这样,我也会在 C# 中使用对象。
【问题讨论】:
-
使用 ToString() 将对象转换为字符串。
-
new [] { ...}