![](/img/trans.png)
[英]How to get comparison of variable in lists as objects of class contained in another list?
[英]How to get variable as a result of a comparison?
我有一個Windows窗體和一個簡單的Horce Racing應用程序。 我的馬是pictureBox控件。 我想通過檢查誰離起點更遠來打印贏家。
control aa.left = (unknown integer value);
control bb.left = (unknown integer value);
control cc.left = (unknown integer value);
有沒有一種簡單的方法可以做到這一點,然后創建一個if結構-“用bb檢查aa,用cc檢查aa,用cc檢查bb”
換句話說,如何獲得具有最大左屬性的變量。
當然,只要這樣做:
偽代碼:
let biggest = aa
if (bb.left > biggest.left)
biggest = bb
if (cc.left > biggest.left)
biggest = cc
print(biggest.name + " is the champion)
如果還有更多,那么您可以使用數組
即。
arrayOfBoxes = [aa, bb, cc]
let biggest = arrayOfBoxes[0]
for each box in arrayOfBoxes
if (box.left > biggest.left)
biggest = box
print(biggest.name + " is the champion)
您可以執行的另一種方法是將您關心的控件捕獲到列表中:
var horses = Controls.Cast<Control>()
.Where(c => c.Name == "aa" || c.Name == "bb" || c.Name == "cc");
如果您有很多代表馬的控件,給它們提供一些通用的Tag
值可能會更容易,因此您可以在該字段上進行搜索:
var horses = Controls.Cast<Control>().Where(c => c.Tag.ToString() == "horse");
然后,您可以通過獲取其Left
屬性為Max
的控件Name
(或Text
或存儲用戶可以理解的標識符的任何屬性)來找到獲勝的馬:
var winner = horses.First(l => l.Left == horses.Max(h => h.Left)).Name;
MessageBox.Show($"The winner is: {winner}!");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.