Les pointeurs en csharp

stysty Messages postés 7 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 24 octobre 2005 - 29 avril 2003 à 16:28
CsharpRudolf Messages postés 3 Date d'inscription mardi 22 septembre 2009 Statut Membre Dernière intervention 26 septembre 2009 - 26 sept. 2009 à 23:34
Bonjour

je sais que les pointeurs sont discret sur csharp
mais j'en ai besoin et je n' y arrive pas trop

je sais qu il faut utiliser unsafe

j'arrive a faire des truc simple mais par exemple je n arrive pas a creer des listes chainée en csharp(par exemple)

est ce que quelqu un a la dresse d un code source qui utilise

les listes chainée (ou arbre) en csharp

qui me donnerais par exemple l'equivalent

du c++

j'ai essaye avec stackalloc mais le probleme c'est que hors le fonction ca marche plus



Element* element= new Element;



merci d'avance

:big)

5 réponses

stysty Messages postés 7 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 24 octobre 2005
30 avril 2003 à 19:22
En fait si j'arrivais à traduire ce code (qui marche en c++)

en csharp ca resoudrais mon problème (ou une voie pour le traduire)

#include "stdafx.h"

#using <mscorlib.dll>
#include <tchar.h>

using namespace System;

struct liste
{
public:
 int valeur;
 liste* lien;
};

//permet d'ajouter un element en tete de liste
liste* ajouteliste(int val,liste* l)
{
liste* p; 
p= new liste;
p->valeur=val;

if (l==NULL)
{
p->lien=NULL;
l=p;
return l;
}
else
{
p->lien=l;
l=p;

return l;
}

}

//Affichage de la liste en utilisant la recursivité

void afficheliste(liste* l)
{
if (l==NULL)
Console::WriteLine("");
else
{
Console::WriteLine(l->valeur);
afficheliste(l->lien);
}

}

int _tmain(void)
{
liste* li;
li = new liste;
li=0;
li=ajouteliste(5,li);
li=ajouteliste(15,li);
afficheliste(li);
Console::Read();

   
  
    return 0;
}

0
stysty Messages postés 7 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 24 octobre 2005
1 mai 2003 à 15:56
cay est j'ai trouvé (en fait c'était tout bête)

voici le code équivalent

using System;

namespace ConsoleApplication13
{

class Class1
{
class liste
{
public int val;
public liste lien;
}

static	liste ajouteliste(int valeur,liste l)
{
liste p = new liste();
p.val=valeur;

if (l==null)
{
p.lien=null;
return p;
}

else

{
p.lien=l;
l=p;
return p;

}
}

static 	void afficheliste (liste li)
{
if (li==null)
Console.WriteLine("");
else
{
Console.WriteLine(li.val);
afficheliste(li.lien);
}

}

[STAThread]
static void Main(string[] args)
{
liste lis = null;
lis=ajouteliste(5,lis);
lis=ajouteliste(15,lis);
lis=ajouteliste(24,lis);

//Console.WriteLine(li.lien.val);
afficheliste(lis);
Console.Read();

}
}
}

0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
1 mai 2003 à 22:16
exact !

plus de pointeurs en C# ... mais des références à la place
plus de '->' mais un simple '.'
En général, on ne s'en plaint pas.
0
Msgbox Messages postés 67 Date d'inscription lundi 1 juillet 2002 Statut Membre Dernière intervention 1 septembre 2006
1 sept. 2004 à 18:17
... en general, parle pour toi, moi sans pointeurs je galere :'(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CsharpRudolf Messages postés 3 Date d'inscription mardi 22 septembre 2009 Statut Membre Dernière intervention 26 septembre 2009
26 sept. 2009 à 23:34
Et pourquoi pas " List liste" plutôt
0
Rejoignez-nous