salut à tous, je suis confronté à un probleme que je n'arrive pas à
resoudre.
'''''' creation de ma classe
public class clsObj
public unStr as string
public unInt as integer
end class
'''''' une procedure basique
dim monObj1 as new clsObj
dim monObj2 as new clsObj
monObj1.unInt = 25
monObj1.unStr = "un truc"
monObj2 = monObj1
monObj2.unInt = 55
msgbox (monObj1.unInt) '''''' donne 55, pourquoi ?
''''''''''''''''''''''''''''''
j'ai l'impression que l'assignation n'utilise qu'un seul pointeur, je ne
comprends pas ce qu'il se passe,
merci de m'aider
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jérémy Jeanson
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps de te faire une explication complète sur la chose maintenant, mais si tu souhaites de documenter, fait une recherche sur les différence entre type référence les type valeurs, tu devrais trouver facilement ton bonheur. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le
temps de te faire une explication complète sur la chose maintenant, mais
si tu souhaites de documenter, fait une recherche sur les différence
entre type référence les type valeurs, tu devrais trouver facilement ton
bonheur.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
En .net, les classes sont des "type référence", je n'ai pas trop le temps de te faire une explication complète sur la chose maintenant, mais si tu souhaites de documenter, fait une recherche sur les différence entre type référence les type valeurs, tu devrais trouver facilement ton bonheur. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Gerald
merci, je n'ai rien trouvé qui me permette de palier à ce probleme. comment puis-je coder pour instancier un objet 1 - assigner (=) sa valeur a l'objet 2, modifier l'objet 2 sans modifier l'objet 1
Gerald
"Jérémy Jeanson" a écrit dans le message de news: %23$
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps de te faire une explication complète sur la chose maintenant, mais si tu souhaites de documenter, fait une recherche sur les différence entre type référence les type valeurs, tu devrais trouver facilement ton bonheur. -- Jérémy JEANSON MCP http://www.jjeanson.fr
merci,
je n'ai rien trouvé qui me permette de palier à ce probleme.
comment puis-je coder pour instancier un objet 1 - assigner (=) sa valeur a
l'objet 2, modifier l'objet 2 sans modifier l'objet 1
Gerald
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de news:
%23$5vIq4iJHA.2516@TK2MSFTNGP05.phx.gbl...
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps
de te faire une explication complète sur la chose maintenant, mais si tu
souhaites de documenter, fait une recherche sur les différence entre type
référence les type valeurs, tu devrais trouver facilement ton bonheur.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
merci, je n'ai rien trouvé qui me permette de palier à ce probleme. comment puis-je coder pour instancier un objet 1 - assigner (=) sa valeur a l'objet 2, modifier l'objet 2 sans modifier l'objet 1
Gerald
"Jérémy Jeanson" a écrit dans le message de news: %23$
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps de te faire une explication complète sur la chose maintenant, mais si tu souhaites de documenter, fait une recherche sur les différence entre type référence les type valeurs, tu devrais trouver facilement ton bonheur. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Patrice
En gros un objet n'est ni plus ni moins qu'un pointeur. Donc monObj2=monObj1 veut dire que monObj2 va maintenant pointer vers le même emplacement que monObj1.
Donc toute modification d'un de ces objets affecte l'autre (car il s'agit tout simplement de deux variables différentes mais qui représente maintenant le *même* objet).
Pour faire une copie d'un objet il faut copier ses données et non pas affecter l'objet lui-même : monObj2.unInt = monObj1.unInt monObj2.unStr = monObj1.unStr
Souvent c'est implanté sous forme d'une méthode Clone monObj2=monObj1.Clone...
-- Patrice
"Gerald" a écrit dans le message de groupe de discussion : #
merci, je n'ai rien trouvé qui me permette de palier à ce probleme. comment puis-je coder pour instancier un objet 1 - assigner (=) sa valeur a l'objet 2, modifier l'objet 2 sans modifier l'objet 1
Gerald
"Jérémy Jeanson" a écrit dans le message de news: %23$
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps de te faire une explication complète sur la chose maintenant, mais si tu souhaites de documenter, fait une recherche sur les différence entre type référence les type valeurs, tu devrais trouver facilement ton bonheur. -- Jérémy JEANSON MCP http://www.jjeanson.fr
En gros un objet n'est ni plus ni moins qu'un pointeur. Donc monObj2=monObj1
veut dire que monObj2 va maintenant pointer vers le même emplacement que
monObj1.
Donc toute modification d'un de ces objets affecte l'autre (car il s'agit
tout simplement de deux variables différentes mais qui représente maintenant
le *même* objet).
Pour faire une copie d'un objet il faut copier ses données et non pas
affecter l'objet lui-même :
monObj2.unInt = monObj1.unInt
monObj2.unStr = monObj1.unStr
Souvent c'est implanté sous forme d'une méthode Clone
monObj2=monObj1.Clone...
--
Patrice
"Gerald" <gerald.andrez@gmail.com> a écrit dans le message de groupe de
discussion : #4yFrU5iJHA.1292@TK2MSFTNGP02.phx.gbl...
merci,
je n'ai rien trouvé qui me permette de palier à ce probleme.
comment puis-je coder pour instancier un objet 1 - assigner (=) sa valeur
a l'objet 2, modifier l'objet 2 sans modifier l'objet 1
Gerald
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de news:
%23$5vIq4iJHA.2516@TK2MSFTNGP05.phx.gbl...
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps
de te faire une explication complète sur la chose maintenant, mais si tu
souhaites de documenter, fait une recherche sur les différence entre type
référence les type valeurs, tu devrais trouver facilement ton bonheur.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
En gros un objet n'est ni plus ni moins qu'un pointeur. Donc monObj2=monObj1 veut dire que monObj2 va maintenant pointer vers le même emplacement que monObj1.
Donc toute modification d'un de ces objets affecte l'autre (car il s'agit tout simplement de deux variables différentes mais qui représente maintenant le *même* objet).
Pour faire une copie d'un objet il faut copier ses données et non pas affecter l'objet lui-même : monObj2.unInt = monObj1.unInt monObj2.unStr = monObj1.unStr
Souvent c'est implanté sous forme d'une méthode Clone monObj2=monObj1.Clone...
-- Patrice
"Gerald" a écrit dans le message de groupe de discussion : #
merci, je n'ai rien trouvé qui me permette de palier à ce probleme. comment puis-je coder pour instancier un objet 1 - assigner (=) sa valeur a l'objet 2, modifier l'objet 2 sans modifier l'objet 1
Gerald
"Jérémy Jeanson" a écrit dans le message de news: %23$
Bonjour Gerald,
En .net, les classes sont des "type référence", je n'ai pas trop le temps de te faire une explication complète sur la chose maintenant, mais si tu souhaites de documenter, fait une recherche sur les différence entre type référence les type valeurs, tu devrais trouver facilement ton bonheur. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Jérémy Jeanson
Bonjour Gerald et Patrice,
Comme l'a écrit Gerald, on rencontre très souvent des méthode Clone(). Ce n'est pas vriament une norme, mais à force d'en écire et d'en lire on finirai par y croire.
Dans ton cas tu pourrais écrire une méthode clone pour ta classe sous la forme :
Public Class clsObj Public unStr As String Public unInt As Integer Public Function Clone() As clsObj Return New clsObj() With { _ .unInt = Me.unInt, _ .unStr = Me.unStr _ } End Function End Class
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Bonjour Gerald et Patrice,
Comme l'a écrit Gerald, on rencontre très souvent des méthode Clone().
Ce n'est pas vriament une norme, mais à force d'en écire et d'en lire on
finirai par y croire.
Dans ton cas tu pourrais écrire une méthode clone pour ta classe sous la
forme :
Public Class clsObj
Public unStr As String
Public unInt As Integer
Public Function Clone() As clsObj
Return New clsObj() With { _
.unInt = Me.unInt, _
.unStr = Me.unStr _
}
End Function
End Class
Comme l'a écrit Gerald, on rencontre très souvent des méthode Clone(). Ce n'est pas vriament une norme, mais à force d'en écire et d'en lire on finirai par y croire.
Dans ton cas tu pourrais écrire une méthode clone pour ta classe sous la forme :
Public Class clsObj Public unStr As String Public unInt As Integer Public Function Clone() As clsObj Return New clsObj() With { _ .unInt = Me.unInt, _ .unStr = Me.unStr _ } End Function End Class
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Gerald
Merci à vous Tres interessant le fait de savoir que les classes sont de type reference J'ai finalement opté pour autre chose, j'avais ecris une methode qui recupere les valeurs de mon objet dans une BdD suivant un Id passe en parametre je vais donc utiliser cette methode qui m'evite d'ecrire une méthode "Clone" puisque toutes mes classes sont construites sur le meme modele. en tous cas merci pour ces eclairages
"Jérémy Jeanson" a écrit dans le message de news:
Bonjour Gerald et Patrice,
Comme l'a écrit Gerald, on rencontre très souvent des méthode Clone(). Ce n'est pas vriament une norme, mais à force d'en écire et d'en lire on finirai par y croire.
Dans ton cas tu pourrais écrire une méthode clone pour ta classe sous la forme :
Public Class clsObj Public unStr As String Public unInt As Integer Public Function Clone() As clsObj Return New clsObj() With { _ .unInt = Me.unInt, _ .unStr = Me.unStr _ } End Function End Class
-- Jérémy JEANSON MCP http://www.jjeanson.fr
Merci à vous
Tres interessant le fait de savoir que les classes sont de type reference
J'ai finalement opté pour autre chose,
j'avais ecris une methode qui recupere les valeurs de mon objet dans une BdD
suivant un Id passe en parametre
je vais donc utiliser cette methode qui m'evite d'ecrire une méthode "Clone"
puisque toutes mes classes sont construites sur le meme modele.
en tous cas merci pour ces eclairages
"Jérémy Jeanson" <jeremy.jeanson@free.fr> a écrit dans le message de news:
eoAr7pCjJHA.5812@TK2MSFTNGP06.phx.gbl...
Bonjour Gerald et Patrice,
Comme l'a écrit Gerald, on rencontre très souvent des méthode Clone(). Ce
n'est pas vriament une norme, mais à force d'en écire et d'en lire on
finirai par y croire.
Dans ton cas tu pourrais écrire une méthode clone pour ta classe sous la
forme :
Public Class clsObj
Public unStr As String
Public unInt As Integer
Public Function Clone() As clsObj
Return New clsObj() With { _
.unInt = Me.unInt, _
.unStr = Me.unStr _
}
End Function
End Class
Merci à vous Tres interessant le fait de savoir que les classes sont de type reference J'ai finalement opté pour autre chose, j'avais ecris une methode qui recupere les valeurs de mon objet dans une BdD suivant un Id passe en parametre je vais donc utiliser cette methode qui m'evite d'ecrire une méthode "Clone" puisque toutes mes classes sont construites sur le meme modele. en tous cas merci pour ces eclairages
"Jérémy Jeanson" a écrit dans le message de news:
Bonjour Gerald et Patrice,
Comme l'a écrit Gerald, on rencontre très souvent des méthode Clone(). Ce n'est pas vriament une norme, mais à force d'en écire et d'en lire on finirai par y croire.
Dans ton cas tu pourrais écrire une méthode clone pour ta classe sous la forme :
Public Class clsObj Public unStr As String Public unInt As Integer Public Function Clone() As clsObj Return New clsObj() With { _ .unInt = Me.unInt, _ .unStr = Me.unStr _ } End Function End Class