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.