簡體   English   中英

C#代碼段的作用是什么?

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

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