Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danimar

ByVal e ByRef

Recommended Posts

Gostaria de saber se quando eu passo uma lista generica por valor para uma função, o valor desta lista será modificada?

Pelos testes que fiz, o valor de minha lista modificou mesmo eu passando o valor para a função por referencia.

Vou colocar o codigo de como eu fiz para explicar um pouco melhor.

Private _ListaTamanhos As New List(Of Tamanho)  //Lista principal com todos os tamanhos de que eu preciso.

procedimento
   Dim tam As New List(Of Tamanho)
	For i As Integer = 0 To cb.Count - 1   //Cb é uma lista com os tamanhos que eu escolhi no _ListaTamanhos, eu escolho alguns.
		  tam.Add(cb.Item(i))
	 Next
	 TransfereTamanhos(tam)
fim procedimento

Private Sub TransfereTamanhos(ByVal Tamanhos As List(Of Tamanho))  //Transfere tamanhos modifica a tabela a qual pertence o tamanho e a salva no banco.

	  For i As Integer = 0 To Tamanhos.Count - 1
				Dim tam As New Tamanho
				tam = Tamanhos(i)
				tam.Tabela = _table  //Modifica a tabela... _table foi a tabela que eu escolhi..
				
				If _ListaTamanhos.Find(AddressOf tam.BuscaNome) Is Nothing Then  //Busca algum item na lista igual, se tiver algum igual não irá salvar.
					tam.Salvar()
					_ListaTamanhos.Add(tam)
				End If
	 Next
 End Sub


   Public Function BuscaNome(ByVal obj As Tamanho) As Boolean //Predicate dentro da classe Tamanho que faz a verificação da descrição e da tabela.
		If obj.Descricao = Me.Descricao Then
			If obj.Tabela.IdTabela = Me.Tabela.IdTabela Then	//se tiver algum igual ira retornar um item e não sera possivel salvar.
				Return True
			End If
		End If
	End Function

Assim..quando eu seto a nova tabela para a minha variavel dentro do procedimento, ela tambem modifica a minha lista de tamanhos _ListaTamanhos.

Sendo que pelo que procurei quando se passa um valor para a função por valor, seu conteudo é passado para a função que não deveria modificar o conteudo da minha lista..

Gostaria de saber se dependendo do tipo de variavel passada na função o compilador interpreta de maneira diferente, e passa a função por referencia,

ou pode ser por causa da varival global na classe.

 

Agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET » Visual Studio .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET

 

Pode acontecer se sua variável for global dela estar sendo alterada em outro lugar, mas quando se passa um valor para um parâmetro de uma função este valor irá como você mandou, este valor não muda sozinho.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.