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

Bri*_*anH 3 c# vb.net arrays

我正在研究VB => C#翻译器,我遇到了一些我不确定直接转换为C#的VB代码.

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

If {"a", "b", "c"}.Contains("c") Then ...
Run Code Online (Sandbox Code Playgroud)

(让我们假装一些有用的东西并不总是如此)

我想知道的是,如果C#中有相同的内容.我能想出的最接近的事情是

if (new object[] {"a", "b", "c"}.Contains("c")) { ... }
Run Code Online (Sandbox Code Playgroud)

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

有没有办法让编译器找出类型?逻辑上像这样的东西:(我知道这不行,但在逻辑上相当于......)

if (new var[] {"a", "b", "c"}.Contains("c")) { ... }
Run Code Online (Sandbox Code Playgroud)

所以它将数组视为字符串数组,并将Contains参数视为字符串?

附带问题:我的印象是上面的VB代码视为{"a", "b", "c"}一个数组string.它是否正确?上面的VB代码是否将"a","b"和"c"视为对象 - 如果是这样,我也将在C#中使用对象.

Jon*_*eet 9

如果所有的数组元素都是相同的类型,或者它们是不同的类型但是以满足类型推断的方式,你可以使用隐式类型的数组 - 就像数组一样var,基本上:

if (new[] { "a", "b", "b" }.Contains("c"))
Run Code Online (Sandbox Code Playgroud)

我不知道这在语义上是否与VB代码相同.