Armazenar nome de variável em Cordas em VB.NET

votos
3

Eu estou tentando armazenar os nomes de algumas variáveis ​​dentro de strings. Por exemplo:

Dim Foo1 as Integer
Dim Foo1Name as String

' -- Do something to set Foo1Name to the name of the other variable --

MessageBox.Show(Foo1Name &  is the variable you are looking for.)
' Outputs:
' Foo1 is the variable you are looking for.

Isso iria ajudar com alguma depuração Eu estou trabalhando.

Publicado 09/12/2008 em 16:31
fonte usuário
Em outras línguas...                            


5 respostas

votos
5

Bem, você pode claramente apenas definir Foo1Name = "foo1" - mas eu suspeito fortemente que não é o que você está depois.

Como você saberia qual variável você está tentando encontrar o nome de? Qual é a foto maior? O que você quer pode ser possível com reflexão, se estamos falando de variáveis não-locais, mas eu suspeito que é ou não viável, ou há uma maneira melhor de atacar o problema em primeiro lugar.

Respondeu 09/12/2008 em 16:36
fonte usuário

votos
2

Será que este exemplo do MSDN usando reflexão ajuda?

Respondeu 09/12/2008 em 16:44
fonte usuário

votos
1

Eu acho que isso realmente depende do que você está tentando depurar. Duas coisas possíveis para olhar são a reflexão e Stacktrace classes. Dito isto quando o programa é compilado, o compilador e runtime não garantem que que os nomes devem ser consistentes com o programa original.

Este é especialmente o caso com depuração vs. compilações. O ponto dos ficheiros.PDB (símbolos) na versão de depuração são para incluir mais informações sobre o programa original. Para aplicações nativas C / C ++ é fortemente recomendado que você gerar símbolos para cada compilação (debug + release) do seu aplicativo para ajudar com a depuração. Em .NET isso é menos de um problema uma vez que existem características como reflexão. IIRC John Robbins recomenda que você sempre gerar símbolos para projetos .NET também.

Você também pode encontrar de Mike Stall blogue útil e as depurador gerenciado amostras.

Respondeu 09/12/2008 em 16:55
fonte usuário

votos
1

Uma solução seria a utilização de uma matriz associativa para armazenar suas variáveis. Uma vez, eu fiz isso na Net, mas eu acho que eu escrevi uma classe personalizada para fazê-lo.

myArray("foo1Name") = "foo1"

Em seguida, você pode apenas armazenar uma lista de seus nomes de variáveis, ou você pode envolver-se que na mesma classe.

if( myArray(variableName(x)) == whatImLookingFor ) print variableName(x) & "is it"
Respondeu 09/12/2008 em 16:45
fonte usuário

votos
0

Para encontrar o nome da variável, veja: Encontrando o nome da variável passada para uma função

Isso se aplica a VB.Net também.

Respondeu 09/12/2008 em 16:46
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more