Les pointeurs en csharp

Signaler
Messages postés
7
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
24 octobre 2005
-
Messages postés
3
Date d'inscription
mardi 22 septembre 2009
Statut
Membre
Dernière intervention
26 septembre 2009
-
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

Messages postés
7
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
24 octobre 2005

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;
}

Messages postés
7
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
24 octobre 2005

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();

}
}
}

Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
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.
Messages postés
67
Date d'inscription
lundi 1 juillet 2002
Statut
Membre
Dernière intervention
1 septembre 2006

... en general, parle pour toi, moi sans pointeurs je galere :'(
Messages postés
3
Date d'inscription
mardi 22 septembre 2009
Statut
Membre
Dernière intervention
26 septembre 2009

Et pourquoi pas " List liste" plutôt