簡體   English   中英

比較時如何獲取變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM