• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ht

[VB.NET] Copiar objectos

5 mensagens neste tópico

boas  :)

tenho uma dúvida/problema acerca da cópia de objectos (deve ter a ver com poo  :hmm:)..

por exemplo, pretendo copiar o objecto ABC para o objecto CDE mas não consigo, ou seja, depois de atribuir o objecto CDE e alterar o conteúdo de CDE altera também em ABC. Penso que o objecto CDE acede ao espaço de memória de ABC.

Dim ABC as new Medida
Dim CDE as new Medida

ABC.CoordX = 100
ABC.CoordY = 200

CDE = ABC

CDE.CoordX += 500

'' Valor de ABC.CoordX -> 600
'' Valor de CDE.CoordX -> 600

Preciso que ao alterar em CDE não altere em ABC, o que não é o caso. Não conheço forma de resolver isto.

Se alguém souber, agradecia a ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

n percebi mto bem...o que queres e atribuir o valor abc para cde e isso???

mete

abc=cde e nao cde=abc

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não é isso..

pretendo copiar ABC para CDE fazendo a atribuição

CDE = ABC

O problema é que quando altero CDE, altera também ABC e não é isso que pretendo.

Se eu fizer CDE.CoordX = 750, o valor de ABC.CoordX = CDE.CoordX sendo 750.

Se ABC e CDE fossem tipos de dados funcionavam como eu queria (por ex, Integer). Mas ABC e CDE são objectos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenta assim

Dim ABC as new Medida
Dim CDE as new Medida

ABC.CoordX = me.CoordX
ABC.CoordY = me.Coordy

ABC.CoordX = 100
ABC.CoordY = 200 

CDE = ABC
CDE.CoordX += 500

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o problema persiste  :wallbash: de qualquer forma obrigado pela ajuda

depois de googlar durante algum tempo, encontrei uma forma um bocado trabalhosa de resolver o problema..

torna-se necessário criar uma função para as classes necessárias do género:

Friend Function Clone() as Medida
	Dim C as new Medida
	C.CoordX = Me._CoordX
                C.CoordY = Me._CoordY
                C.CoordZ = Me._CoordZ
	Return C
End Function

gostava que houvesse uma forma mais simples em vez de estar a adaptar a função para várias classes..

se alguém conhecer outra forma, que coloque aqui..

cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora