我正在开发一个 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# 中使用对象。
最佳答案
如果所有数组元素都是相同类型,或者如果它们是不同类型但满足类型推断的方式,您可以使用隐式类型化数组 - 如var
但对于数组,基本上:
if (new[] { "a", "b", "b" }.Contains("c"))
不过我不知道这在语义上是否与 VB 代码相同。
关于C# 相当于 VB 中的 { }.Contains(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45115879/