2015-02-24 75 views
0

我剛纔碰到這條線的C#代碼,我不知道這意味着什麼:C#表達,而(!(SLINE = oStreamReader.ReadLine())= NULL)

string sLine = ""; 

while ((sLine = oStreamReader.ReadLine()) != null) 

我認爲oStreamReader.ReadLine()是一個字符串。

我的猜測是,它是在說,雖然這兩個變量都不爲空?

找遍四周,但一直沒能找到這種符號的任何引用

+0

這是一個循環ReadLine一次讀取一行,所以它逐行讀取直到文件結束 – 2015-02-24 15:51:26

回答

5

我的猜測是,它是在說,而變量也不是 空?

不,它不是比較兩者。相反,這條線

while ((sLine = oStreamReader.ReadLine()) != null) 

手段,

  1. 指定的oStreamReader.ReadLinesLine
  2. 檢查的結果,如果賦值表達式的結果不等於空。 (該結果將被存儲在sLine
+1

該死的,只是打敗了我:) – 2015-02-24 15:51:54

+0

我把評論,而不是.. :) – 2015-02-24 15:52:30

1

它讀取在流讀取器的所有行。

解析表達式,這是發生了什麼:

  1. oStreamReader.ReadLine()執行
  2. 它的返回值分配給sLine
  3. 分配的返回值進行比較,null

它不會比較sLine爲空,它不會將oStreamReader.ReadLine()與null eith呃。如果sLine是一個只有setter的屬性,它仍然可以正常工作。

這個想法是,賦值運算符本身實際上有一個返回值 - 這就是與null相比。