[英]What does this snippet of C# code do?
結果是什么?可見是相等的嗎?
if(a==b)
result.IsVisible = obj1.status.abc_REPORT == 'Y'
&& obj1.AnotherValue.ToBoolean() == false;
這取決於obj1.status.abc_Report
和obj1.AnotherValue.ToBoolean()
的值(並且都取決於是否a == b)。
我不確定真正的問題是什么-哪一點讓您感到困惑?
可能會使您感到困惑的是&&運算符短路(並且可能缺少支撐!)
如果左邊的計算結果為&&運營商將只評估其右側true
:和表達的總體結果是true
當且僅當雙方的計算結果為true
。 (我假設這里沒有奇怪的用戶定義轉換。)
因此,另一種書寫方式是:
if (a == b)
{
bool visibility = false;
if (obj1.status.abc_REPORT == 'Y')
{
if (obj1.AnotherValue.ToBoolean() == false)
{
visibility = true;
}
}
result.IsVisible = visibility;
}
請注意,條件比較布爾值,如下所示:
obj1.AnotherValue.ToBoolean() == false
通常是這樣寫的:
!obj1.AnotherValue.ToBoolean()
(請注意開頭的感嘆號-邏輯“非”運算符。)
與此相同,但少了幾行:
if (a==b) {
if (obj1.status.abc_REPORT == 'Y') {
if (obj1.AnotherValue.ToBoolean() == false) {
result.IsVisible = true;
}
else {
result.IsVisible = false;
}
}
else {
result.IsVisible = false;
}
}
簡單來說:
如果a等於b:
結果僅在以下情況下可見:
object1的狀態abc_report為Yes(Y =很有可能是Yes)AND object1的其他值不能轉換為布爾值
我猜是結果。IsVisible是一個布爾值
如果滿足以下條件,則為true:obj1.status.abc_REPORT =='Y'和obj1.AnotherValue.ToBoolean()== false
同樣,a == b必須為true才能輸入初始
讓我們逐行:
if(a==b)
如果a的值等於b的值,則執行下一行很明顯
result.IsVisible = obj1.status.abc_REPORT == 'Y'
&& obj1.AnotherValue.ToBoolean() == false;
結果是某個對象(可能是winforms控件等),其對象具有IsVisible屬性,如果obj1.status.abc_REPORT等於'Y'並且obj1.AnotherValue.ToBoolean()等於false,則將其設置為true;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.