2013-12-16 29 views

回答

1

我猜你正在使用CollectionKeyValuePair<long, long>,這兩個值是x和y座標。對於僅設置值,我建議將其他值設置爲-1。這樣可以,因爲你沒有使用ulong

說這些假設是正確的,你的收藏被稱爲Points

我會建議使用linq其中y是你想要的值:

Points.Select(p => p.Value).ToArray(); 

Points.Select(p => p.Value).ToList(); 

這將返回一個新的數組或列表,這取決於,包含所有的y值。如果您需要x值,您將使用Key而不是Value。由於您只抓取該值,因此Key(x)爲空,-1或其他值無關緊要。

更進一步,您可以選擇所有y值,其中x滿足條件。我猜這將基於您說

只有一個某些點

同樣,在Points是收集軸值(Y)對你有用KeyValuePair<long, long>

int example = 5; 
Points.Where(p => p.Key == example).Select(p => p.Value).ToArray(); 

Points.Where(p => p.Key != -1).Select(p => p.Value).ToArray(); 

延續(見第一個評論):

Queue<KeyValuePair<long, long>> queue = new Queue<KeyValuePair<long, long>>(); 
KeyValuePair<string, Queue<KeyValuePair<long, long>>> pair = new KeyValuePair<string, Queue<KeyValuePair<long, long>>>("test", queue); 

pair.Value.Enqueue(new KeyValuePair<long, long>(-1, 5)); 

我沒有得到這個代碼的問題,工作正常。

可能的其它的解決方案:

取代具有KeyValuePair<long,long>的。你可以有KeyValuePair<long,long[]>long[]將根據您的需要存儲一個或兩個值。唯一的限制是你必須假設如果數組長度爲1,那麼它只存儲y而不是x,否則如果數組的大小爲2,則假定它在{x,y}中,格式。

+0

我沒有集合,這是我的結構--- KeyValuePair >> ---並且在此隊列中是x和y的值軸。我怎樣才能添加到這個隊列,其KeyValuePair的值只有y?我嘗試了queue.Enqueue(新的KeyValuePair (-1,elem.Value)),但它不起作用。 – Sejn

+0

_I嘗試queue.Enqueue(新的KeyValuePair (-1,elem.Value)),但它不工作。我遵循了這一點,並在我的答案中發佈了代碼(請參閱延續)。我沒有得到任何與該代碼的錯誤,運行良好。也許這是你的語法問題?在不需要'x'的情況下,你爲'y'輸入-1是否滿意? – tjheslin1

+0

另一種選擇是商店使用'KeyValuePair '。我在我的答案編輯中更詳細地介紹了代碼更容易閱讀的地方。 – tjheslin1

0

如果我沒有錯,你使用的是字典,如果是這樣的話,字典的第一個值是X值,第二個值是Y值。

在字典中,第一個值是鍵,必須是唯一的。我知道當你試圖添加兩個具有相同值的鍵時,dicitionary會拋出一個異常,但實際上我不知道是否可以在鍵中設置空值。

如果字典讓該鍵設置爲空值,那麼問題可能是它可以找到值,因爲有很多空鍵。

你可以嘗試使用另一種方式來存儲值,也許在一個結構中,如果你有很多點,那麼它的搜索速度會變慢。

相關問題