2013-04-22 99 views
0

我創建了一個包含3個浮點數和3個矩形的字典。之後,我創建一個列表來排序字典。最低的浮動點應該是列表中的第一個條目。最後,我希望變量FirstRectInList具有與列表中第一個條目的矩形相同的值。 但我總是收到此錯誤信息:不能隱式地將類型'float'轉換爲'Microsoft.Xna.Framework.Rectangle'

無法隱式轉換類型 '浮動' 到 'Microsoft.Xna.Framework.Rectangle'

有什麼不對? 變量FirstRectInList應該得到字典的值:(0, 0, random.Next(101), random.Next(101))。而不是字典的關鍵。

Dictionary<float, Rectangle> Users = new Dictionary<float, Rectangle>(); 

for (int j = 0; j <= 3 - 1; j++) 
{ 
    float Points = random.Next(101); 
    Users.Add(Points, new Rectangle(0, 0, random.Next(101), random.Next(101))); 
} 
var list = Users.Keys.ToList(); 
list.Sort(); 

Rectangle FirstRectInList = list[0]; 
+0

它需要:FirstRectInList =用戶[列表[0]。請注意,代碼崩潰的可能性不爲零,您沒有做任何事情來確保密鑰是唯一的。代碼沒有多大意義,所以很難提出替代方案。 – 2013-04-22 13:30:39

回答

3

list僅包含Users字典的float類型的鑰匙。它不包含類型Rectangle的值。
因此,list[0]返回最小密鑰而不是最小密鑰的Rectangle

要達到什麼樣的你正在嘗試做的,你可以使用LINQ:

Rectangle FirstRectInList = Users.OrderBy(x => x.Key).First().Value; 
+0

Thanx。有用。 – Tommy 2013-04-22 14:31:05

相關問題