OVH Cloud OVH Cloud

sous procédure (dans une procédure)

5 réponses
Avatar
Jimi
en delphi, on peut faire :

procedure machin
procedure truc
begin
end
begin
end

en c#, peut-on faire un équivalent ?

5 réponses

Avatar
Cyrille Szymanski
Jimi wrote in news:43febcad$0$29197$:

procedure machin
procedure truc
begin
end
begin
end

en c#, peut-on faire un équivalent ?



C# est un langage très différent du Pascal, les approches du même
problème seront très souvent différentes. Il faut se former au nouveau
langage et ne pas chercher à traduire littéralement.

Ici visiblement tu as factorisé du code de la procédure "machin" dans la
procédure truc que tu places en "inline" pour ne pas polluer l'espace de
noms. En C# le problème ne se pose pas vraiment car les méthodes (les
procédures pour simplifier) dépendent toutes d'un classe.

Tu peux néanmoins "cacher" certaines méthodes en les rendant privées.
Elles ne seront visibles que par les instances de ta classe (pour
simplifier tu ne pourras les utiliser que dans les méthodes de ta classe)
ce qui revient en gros à ce qui est fait en Pascal.

class Machin {
private void truc() {
}
public void machin() {
}
}

--
Cyrille Szymanski
Avatar
Jimi
Cyrille Szymanski a écrit :
C# est un langage très différent du Pascal, les approches du même
problème seront très souvent différentes. Il faut se former au nouveau
langage et ne pas chercher à traduire littéralement.



j'espérais bien ce genre de réponse si une transcription littérale
n'avait pas de sens.

Ici visiblement tu as factorisé du code de la procédure "machin" dans la
procédure truc que tu places en "inline" pour ne pas polluer l'espace de
noms. En C# le problème ne se pose pas vraiment car les méthodes (les
procédures pour simplifier) dépendent toutes d'un classe.



on peut faire pareil en pascal, mais coller une classe pour simplement
faciliter la lisibilité, boarppfpfp...

Tu peux néanmoins "cacher" certaines méthodes en les rendant privées.
Elles ne seront visibles que par les instances de ta classe (pour
simplifier tu ne pourras les utiliser que dans les méthodes de ta classe)
ce qui revient en gros à ce qui est fait en Pascal.

class Machin {
private void truc() {
}
public void machin() {
}
}



un peu compliqué, et c'est bien ce que je redoutais comme réponse.

En plus, j'ai un grave pb d'espace de nom, tout est visible de partout
chez moi, même si les fichiers sont différents. Je vais voir cette
notion d'espace de noms.
Avatar
balmeyer
>> class Machin {


private void truc() {
}
public void machin() {
}
}



un peu compliqué, et c'est bien ce que je redoutais comme réponse.



Après, tout est question de goût et d'habitude ! :) Pour ma part, je
trouve ça compliqué de déclarer une procédure à l'intérieur d'u ne
autre procédure, mais c'est peut-être parce que je n'ai pas
l'habitude du pascal..;
Avatar
Jimi
balmeyer a écrit :
Après, tout est question de goût et d'habitude ! :) Pour ma part, je
trouve ça compliqué de déclarer une procédure à l'intérieur d'une
autre procédure, mais c'est peut-être parce que je n'ai pas
l'habitude du pascal..;



c'est pratique qd t'as un bout de code similaire à 2 endroits d'une
procédure en fait, mais malgré tout spécifique à cette procédure.
Avatar
Michael Moreno
Cela permet surtout de faire de l'inline et d'avoir acces aux variables
locales de la methode contenant => on s'enquiquine pas avec le passage
de parametres. Mais on s'en sort tres bien sans.

--

----------------------------------------------

http://michael.moreno.free.fr/