VB .Net 获取具有最小值的整数变量的名称

VB .Net Get the integers variable's name that has the loweset value

我希望从整数变量数组中获取包含最小值的变量名。

Dim var1 As Integer = 101
Dim var2 As Integer = 14
Dim var3 As Integer = 75
Dim var4 As Integer = 8
Dim var5 As Integer = 9

Dim vals As Integer() = {var1, var2, var3, var4, var5}

Dim smallest As Integer = Integer.MaxValue

For Each element As Integer In vals
    smallest = Math.Min(smallest, element)
Next

smallest = 8,但是如何获取名称“var4”?

谢谢

在编译时,局部变量的名称仅在您的 Visual Basic 文本中已知。它们在编译的应用程序中丢失了。也就是说,您无法在 运行 时间访问它们。

您可以使用元组将名称与数字一起存储为字符串。

Dim namedIntegers As (name As String, value As Integer)() = {
    ("var1", 101),
    ("var2", 14),
    ("var3", 75),
    ("var4", 8),
    ("var5", 9)
}

Dim smallest = namedIntegers.OrderBy(Function(x) x.value).First()
Console.WriteLine($"Smallest variable is {smallest.name} = {smallest.value}")
Console.ReadKey()

版画

Smallest variable is var4 = 8

Function(x) x.valueLambda Expression.

可以得到数组中的索引,但不能得到变量名:

Dim var1 As Integer = 101
Dim var2 As Integer = 14
Dim var3 As Integer = 75
Dim var4 As Integer = 8
Dim var5 As Integer = 9

Dim vals As Integer() = {var1, var2, var3, var4, var5}

Dim smallest As Integer = Integer.MaxValue
Dim smallestIndex As Integer = 0

For Each i As Integer = 0 To vals.Length - 1
    If vals(i) < smallest Then
       smallestIndex = i
       smallest = vals(i)
    End If    
Next

变量名供程序员使用。如果您将它们暴露给用户而不是为了报告错误,那您就做错了。

也许您想要这样的数组:

Dim var(5) As Integer = {0, 101, 14, 75, 8, 9}

现在索引也隐含了变量。

您无法获取变量名,因为它不是用这些变量的值填充的数组的一部分。如果索引不够用,确实需要名字,你应该考虑使用不同的集合:Dictionary(Of String, Int32):

Dim dict As New Dictionary(Of String, Int32)
dict.Add("var1", 101)
dict.Add("var2", 14)
dict.Add("var3", 75)
dict.Add("var4", 8)
dict.Add("var5", 9)

Dim lowestValuePair = dict.OrderBy(Function(pair) pair.Value).First()
Dim name As String = lowestValuePair.Key   ' var4
Dim value As Int32 = lowestValuePair.Value ' 8

我在这里使用的是 LINQ 方法 OrderByFirst,因此您需要添加 Imports System.Linq