2013-05-14 33 views
1

C#不喜歡三分球,但我需要使用它們現在創建一個鏈表,就像我們會在C做的結構很簡單:指針在C#結構來創建一個鏈表

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

但我得到的錯誤:「無法獲取地址,獲取大小或聲明指向託管類型的指針」。有任何想法嗎?

+1

爲什麼不['名單'](http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)? –

+2

@WouterHuysentruit或'LinkedList '如果你想要一個鏈表;} –

+0

@WouterHuysentruit如果你想插入/從中間刪除,並且不需要索引訪問,在很多情況下它會更好。 –

回答

6

你可以使用的class代替struct

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

這將自動提供正確的行爲。

這就是說,你可能想直接使用框架中的LinkedList<T>類。

+0

你說得對。我在課上做了同樣的事情,但老師想要指針 – FilipeTR

+2

C#中的指針並不是一個好主意。你確定他想要你用C#而不是C/C++來做到這一點嗎? – sed

+0

這是C#。他們正在學習如何使用指針。這就是爲什麼我不能使用集合或對象 – FilipeTR

1

Any ideas?

使用類,而不是一個結構,然後將指針變成一個參考:

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

然後它是使用屬性而不是公共領域是一個好主意。

2

問題是字符串聲明。你必須去低級別並使用char *指針。使用unsafe自帶離開管理世界上所有的頭痛...

+0

我認爲解決了這個問題。現在,我將嘗試使用char指針 – FilipeTR

+0

@ user2383078 - 返回到C/C++或學習如何使用C#方法。字符指針會使更壞的解決方案變得更糟。 –

+0

同意。早些時候他說:「這是C#......但老師想要指針」。那位老師應該爲教學指導鼓掌,但因爲使用錯誤的工具而被解僱。他會留下一大堆幾乎不瞭解指針的學生,但認爲將塊標記爲「不安全」是很好的做法,這樣他們可以利用指針進行低級別的處理,並且可以更「有效」地完成任務。 –