Pointeur à structurer en C # pour créer une liste chaînée

C # n’aime pas les pointeurs, mais je dois les utiliser maintenant pour créer une liste chaînée, comme nous le ferions en C. La structure est simple:

public unsafe struct Livro { public ssortingng name; public Livro* next; } 

Mais j’obtiens l’erreur suivante: “Impossible de prendre l’adresse de, d’obtenir la taille de, ou de déclarer un pointeur sur un type géré”. Des idées?

Vous pouvez simplement utiliser une class au lieu d’une struct :

 public class Livro { public ssortingng Name { get; set; } public Livro Next { get; set; } } 

Cela fournira le comportement approprié automatiquement.

Cela dit, vous voudrez peut-être simplement utiliser la classe LinkedList directement à partir de la structure.

Le problème est la déclaration de chaîne . Vous devez aller au plus bas niveau et utiliser des pointeurs char *. Utiliser unsafe avec tous les maux de tête de quitter le monde géré

Des idées?

Utilisez une classe au lieu d’une structure, puis le pointeur devient une référence:

 public class Livro { public ssortingng name; public Livro next; } 

Il serait alors judicieux d’utiliser des propriétés plutôt que des champs publics.

vous pouvez le faire avec struct comme ceci:

 struct LinkedList { public int data; public LinkedListPtr next; public class LinkedListPtr { public LinkedList list; } } 

ou comme ceci:

 struct LinkedList { public int data; public LinkedList[] next; } 

mais il est préférable d’utiliser simplement class pour la liste liée à la place.