C# 相当于 VB 中的 { }.Contains()

标签 c# arrays vb.net

我正在开发一个 VB => C# 转换器,我遇到了一些我不确定是否可以直接转换为 C# 的 VB 代码。

在 VB 中你可以做类似的事情

If {"a", "b", "c"}.Contains("c") Then ...

(让我们假装它是有用的,但并不总是真实的)

我想知道在 C# 中是否有类似的东西。我能想到的最接近的事情是

if (new object[] {"a", "b", "c"}.Contains("c")) { ... }

我的问题是我必须在 C# 中定义类型,这意味着我必须使用对象 - 因为我正在编写一个翻译器,它需要同样适用于 的数组intbool 数组、自定义类数组等。我不确定让所有内容成为对象而不是更具体的类型是否是个好主意。

有没有办法让编译器找出类型?逻辑上是这样的:(我知道这不对,但逻辑上等同于...)

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/

相关文章:

c# - 我是否需要在表示层中添加对 EntityFramework.SqlServer 的引用?

c# - 要分配值的任一属性

java - 考虑到问题标准,是否有比冒泡排序更有效的形式对该数组进行排序?

C 数组作为函数参数 : Size check?

php - 连接到客户端桌面应用程序的网站

c# - 在哪里可以查看 .net 库背后的代码?

c# - 错误 : ValueFactory attempted to access the Value property of this instance

C# 在构造期间通过 Ref 参数推断分配的成员的可空性

c - C语言中extern buffer[]和extern *buffer有什么区别?

c# - 将 VB.NET 项目转换为 C# 项目