VB.Net 中任意字符串的 Directcast 或 ctype

Directcast or ctype on a any string in VB.Net

我想使用 directcast 或 ctype 之类的东西,但这次用于字符串。不幸的是,我不知道如何进行。

 Public bttkey1color, bttkey2color, bttkey3color, bttkey4color, bttkey5color, 
 bttkey6color, bttkey7color as string

Dim myColor As String() = IO.File.ReadAllLines(My.Application.Info.DirectoryPath + ("\Color.txt"))

我怎样才能减少这段代码?不用我写几十遍了。

bttkey1color = myColor(1)
bttkey2color = myColor(2)
bttkey3color = myColor(3)
bttkey4color = myColor(4)
bttkey5color = myColor(5)
bttkey6color = myColor(6)
bttkey7color = myColor(7)

您可以使用 Color.FromName(String) Method.

为减少代码,使用 Color 数组作为结果,而不是单个变量。

' Test
Dim colorNames As String() = {"Lime", "Black", "Red"}
Dim colors As Color() = colorNames.
    Select(Function(s) Color.FromName(s)).ToArray()

For Each c In colors
    Console.WriteLine(c)
Next

版画

Color [Lime]
Color [Black]
Color [Red]

或者,如果您对 LINQ 不满意,这里有一个使用 For 循环的解决方案

Dim colorNames As String() = {"Lime", "Black", "Red"}
Dim colors(colorNames.Length - 1) As Color
For i = 0 To colorNames.Length - 1
    colors(i) = Color.FromName(colorNames(i))
Next

For Each c In colors
    Console.WriteLine(c)
Next

另见