2012-04-01 28 views
1

C# XNA Xbox, in this case optional parameters are not optionalC#XNA的Xbox HashSet的元組和

由於從上面的問題幫助現在可選參數工作,或者至少看起來好像他們應該工作。

但是我現在卡在HashSets和元組,看起來不可用。

我可以寫我自己的兩個類的版本。使用Dictonary(可能)從零開始組裝HashSet。不過,我寧願繼續使用標準的。

如果這些類存在於庫的PC版本中,那麼我可以將它們從PC C#庫複製並粘貼到我自己的代碼中?

使用「轉到定義」結果在「HashSet [來自元數據]」,並且是C++頭文件,就像它顯示類接口但沒有實現。

繼續這裏:stackoverflow.com/questions/10246572/c-sharp-hashset2-to-work-exactly-like-the-standard-c-sharp-hashset-not-compilin

+0

您看不到實現,因爲Microsoft不會使用XNA的二進制文件發佈調試符號。否則,他們會將XNA的所有源代碼都帶走。您可以看到您的代碼將看到的完全相同:名稱,類型,屬性...但沒有代碼,也沒有私人成員。 – Elideb 2012-04-02 09:34:40

回答

2

有都是非常基本的數據結構,你可以自己製作。

Here is a HashSet.

,這裏是一個元組只需添加更多的項目需要。

public class Tuple<T1, T2> 
{ 
    public T1 Item1 { get; set; } 
    public T2 Item2 { get; set; } 

    public Tuple(T1 item1, T2 item2) 
    { 
     Item1 = item1; 
     Item2 = item2; 
    } 
} 
+0

鏈接到上面的HashSet實現意味着存儲了大量未使用的值,大概這些中的一些可以通過使用bool而不是他們使用的UInt16s來抵消?內置的元組是如何實現的? 「public T1 Item1 {get; set;}」看起來像一個屬性的定義,數據在哪裏存儲?另外,複製原始HashSet定義好像應該比使用Dictionary創建另一個抽象層更好。我通常不會介意,但它可以在異常敏感的情況下使用。 – alan2here 2012-04-01 19:02:33

+1

HashSet總是存儲大量未使用的值,所以如果空間非常重要,可以使用另外一種方法來創建其他內容,使用字典也可以存儲某個鍵的值,這會使其略微更差。 '{get; set;}'是[自動實現的屬性](http://msdn.microsoft.com/zh-cn/library/bb384054.aspx)。 – 2012-04-01 19:06:36

+0

謝謝,自動實現的屬性會有用。 ClassicThunder的元組似乎比香草C#元組更容易變化。不認爲它在平等的情況下工作,大概我必須實現這一點,以及我還沒有想到的其他事情。我希望HashSet具有足夠類似的界面,不會破壞事物。我不明白爲什麼我不能複製香草的。如果使用解決方案資源管理器「Program Files \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ Profile \ Client \ System.Core.dll」向項目添加新的參考,會發生什麼情況? – alan2here 2012-04-01 19:29:07

1

不,您無法獲取PC二進制文件並在Xbox上使用它們。它們針對不同的硬件進行編譯,而XNA X360項目將拒絕使用PC dll。

這些類可能有幾個實現。我很確定CodePlex中的許多物理和引擎項目已經擁有它們,並且選擇它們是完全合法的(儘管始終建議顯示識別)。

+0

感謝您的信息。 – alan2here 2012-04-02 14:34:43