Déclarer deux fois le même variable

Le
Delf
Bonjour.

Soit la classe ci-dessous :

namespace WebConfigPageEditor
{
using System;
using System.Xml;

public class WebConfigPageEditorSection
{
[]

*private string m_Username* = null;
*private string m_Password* = null;

public WebConfigPageEditorSection()
{
}

internal void Load(XmlNode pSectionNode)
{
[]

*string m_Username* = pSectionNode.Attributes
["username"].InnerText;
*string m_Password* = pSectionNode.Attributes
["password"].InnerText;

[]
}
}
}

Cette classe compile alors qu'il y a des variables déclarées deux
fois.
Chose marrante, au final, je n'ai aucune valeur pour Username et
m_Password.

--
Delf
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Delf
Le #18580321
Je suis sous VS 2005, .NET 2.0.50727

--
Delf
Jérémy Jeanson
Le #18580921
Bonjour Delf,

En effet ceci peut sembler marrant... enfin cela dépend du point de vue ;)

En fait tu as deux jeux de variables, si tu fais un test tu verras que
les variables que tu déclare dans le Load ne serront auront une portée
limitée à cette méthode et ne touchent pas à celles de ta classe. Et que
si tu tu change l'état de tes variables de ta classe dans une autre
méthode, leur valeur serra bien conservée mais ne serra pas accessible
dans ton load car les variables déclarées dans le laod prennent la main.

Tout est donc des plus normal, même si il est vrai qu'il serrait plus
simple que le compilateur .net ou Visual Studio t'interdisent l'usage de
noms identiques.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Jean-Michel Berthier
Le #18602561
Bonjour,
Je ne vois rien de marrant, si ce n'est la syntaxe des variables.
Les premières sont des membres de la classe, d'où cette notation m_ (qui est
plus courante en C++ qu'en C#)
Les secondes sont des variables locales distinctes qui se trouvent avoir le
même nom.
Un programmeur qui veut retrouver ses petits évitera de les nommer en
utilisant le préfixe m_


"Delf" news:
Bonjour.

Soit la classe ci-dessous :

namespace WebConfigPageEditor
{
using System;
using System.Xml;

public class WebConfigPageEditorSection
{
[...]

*private string m_Username* = null;
*private string m_Password* = null;

public WebConfigPageEditorSection()
{
}

internal void Load(XmlNode pSectionNode)
{
[...]

*string m_Username* = pSectionNode.Attributes
["username"].InnerText;
*string m_Password* = pSectionNode.Attributes
["password"].InnerText;

[...]
}
}
}

Cette classe compile alors qu'il y a des variables déclarées deux
fois.
Chose marrante, au final, je n'ai aucune valeur pour Username et
m_Password.

--
Delf
Delf
Le #18605691
Jean-Michel Berthier avait énoncé :

Je ne vois rien de marrant, si ce n'est la syntaxe des variables.
Les premières sont des membres de la classe, d'où cette notation m_ (qui est
plus courante en C++ qu'en C#)
Les secondes sont des variables locales distinctes qui se trouvent avoir le
même nom.



Je trouve marrant que le compilateur laisse passer une telle chose car
c'est source de problème.

Après, ce que j'en dis...

Un programmeur qui veut retrouver ses petits évitera de les nommer en
utilisant le préfixe m_



Une erreur de C/C...

--
Delf
Jérémy Jeanson
Le #18623071
Bonjour Jean-Michel et Delf,

"m_" un vielle amis pour les plus anciens. Je ne suis pas certain qu'on
puisse l'attibuer à C mais plutôt à nos amis de Microsoft qui en ont pas
mal saupoudré dans leurs codes. Je crois même avoir lu qu'il s'agissait
de déclaration de Modules (Vb quand tu nous tiens)

Personnellement j'ai fais la connaissance de m_ en Vb6. en C et C++ j'ai
plus connu le fait de préfixer par le type.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Delf
Le #18627161
Après mûre réflexion, Jérémy Jeanson a écrit :

"m_" un vielle amis pour les plus anciens. Je ne suis pas certain qu'on
puisse l'attibuer à C mais plutôt à nos amis de Microsoft qui en ont pas mal
saupoudré dans leurs codes. Je crois même avoir lu qu'il s'agissait de
déclaration de Modules (Vb quand tu nous tiens)

Personnellement j'ai fais la connaissance de m_ en Vb6. en C et C++ j'ai plus
connu le fait de préfixer par le type.



On m'avaiit enseigné à la fac d'utiliser le préfixe _ mais je trouve ça
peu lisible.

J'utilise donc toujours m_. Pour les variables locales, je préfixe du
type simple : sMessage, iCount, dValue, oObjet, etc.

Le principal étant de rester homogène.

--
Delf
Publicité
Poster une réponse
Anonyme