O VB.NET tem um equivalente direto aos out
parâmetros de função C # , onde a variável passada para uma função não precisa ser inicializada?
vb.net
c#-to-vb.net
out-parameters
cspolton
fonte
fonte
Object
, por isso não pode ser usada para umByRef x As Integer
parâmetro).ByRef
parâmetros. (Isso não acontece com parâmetros de tipo de valor.)Nothing
a eles, o aviso será eliminado, embora não altere o resultado.Nothing
a eles até agora. É muito demorado porque estou tendo que fazer isso centenas de vezes em um grande site legado. Obrigado por investigar.Out
atributo não é equivalente àout
palavra-chave C # .Não, não há construção equivalente que permite que uma variável não inicializada seja passada para um método sem um aviso, mas, como mencionei na minha pergunta e resposta especificando um
<Out()>
atributo em umaByRef
definição de parâmetro, embora VB ignore isso, é tratado por C # como umout
parâmetro.Portanto, eu pré-inicializaria as variáveis de referência para
Nothing
e especificaria<Out()> ByRef
para significar a intenção (isso funcionará se os usuários C # alguma vez acessarem seus métodos).Se você sentir que sabe quando pretende acessar o padrão
Nothing
em variáveis de referência não atribuídas, você pode definir a "Configuração de aviso" "Uso da variável antes da atribuição" para "Nenhum" no nível do projeto (Propriedades do projeto> Compilar, e provavelmente deseja definir a configuração para "Todas as configurações" antes de alterar esta configuração), ou, no VS2015 (VB.NET 14), você pode usar#Disable Warning BC42030
.fonte
Versão C #
Versão Vb.net
Encontrou a resposta aqui
Atualizar
Conforme declarado no comentário, não se esqueça de inicializar seu parâmetro que será usado no slot de saída
fonte
Eu tive o problema no VB.NET que chamei uma função "por ref" que passou um array de volta.
Mesmo que o compilador tenha sinalizado isso como um aviso, tudo bem. A correção é super simples e provavelmente uma boa prática de programação.
eu mudei
para
Também ajuda na codificação se os nomes das variáveis forem descritivos ...
fonte
Você pode usar o método de passagem por referência em VB.NET.
Você precisa do mecanismo de parâmetro Out em C #, porque ele não permite que você use nenhuma variável sem inicializá-la.
O VB.NET não precisa de uma palavra-chave especial, pois ele o faz automaticamente.
Basta usar ByRef.
fonte
O VB tem o atributo que deve ser igual ao C # out, mas hoje você ainda recebe um aviso mesmo se usá-lo. Existem detalhes sobre como consertá-lo na área vblang do github. https://github.com/dotnet/vblang/issues/67 .
fonte
Use a palavra-chave ByRef antes da variável.
fonte
ByRef
é equivalente aref
parâmetros em C #, que precisam ser inicializados antes de serem transmitidos para uma função.