2017-09-04 2 views
1

私は毎日のC#を読んでいない、と最近のを読んでいる私を投げている何かをコミット:C#:周囲にスペースがあります!演算子、どのように解釈する?

if ((length > maxLength) && ! IsTable(furniture.FurnitureType)) 
do_something; 

私は精神的に& &を解析し、問題を抱えています!演算子、特に!演算子の後にスペースがあります。

質問がに蒸留することができる。具体的な質問がある

if ((length > maxLength) && !IsTable(furniture.FurnitureType)) 

if ((length > maxLength) && ! IsTable(furniture.FurnitureType)) 

(スペースなし)と同じ(スペースで)です

  • IsTable()がtrueであるかどうかまたはfalse、評価を変更する?
  • 後にスペースがありますか?基本的に最初の評価をすべての作業をさせますか?

または、受け入れ可能な構文について不明な点がありますか?

+0

*制御* –

+1

あなたは問題を抱えています... "解析"していますか?それをプログラム的に読んだり、それが何をしているのかを理解しようとしていますか? 「bang」演算子は「not」の略で、通常は右辺のものに接続されます。 – Felype

+1

IsTableは、length> maxlengthがtrueの場合にのみ呼び出されます。 trueの場合はIsTableが呼び出され、falseを返した場合は論理NOT演算子(!)がfalseの戻り値に適用され、_do_something_が実行されます。スペースは意味がありません。 – Steve

答えて

5

C#では、&&演算子は、1番目の条件がtrueの場合にのみ、2番目の条件が調べられることを意味します。

したがって、(length > maxLength)trueである場合にのみ、!IsTable(furniture.FurnitureType)の条件が検査されます。

C#をコンパイルすると、ほとんどの演算子の後には、!などのスペースは無視されます。したがって、!の後のスペースは無意味です。

!IsTable(furniture.FurnitureType) 

、それはIsTable(furniture.FurnitureType)trueであれば、それはfalseとして結果、および他の方法で回避することを意味します

! IsTable(furniture.FurnitureType) 

だけのようなものです。

length > maxLengthFurnitureTypeがテーブルでない場合は、句全体がtrueになります。椅子、机、クローゼット、またはスツール。しかし、テーブルではありません。

+0

オペレータの後のスペースは何も意味しませんが、オペレータの近くのスペースは、あるオペレータを別のオペレータから分離する場合、何かを意味する可能性があります。考案された例は、 '+ + a'は' ++ a'や '++ a'と同じではないということです。 –

+0

@ LasseV.Karlsenそれを指摘してくれてありがとう。私は私の答えを言い換えました。 –

+1

あなたが私に尋ねると本当に必要なわけではありませんが、私はちょうど非常に考案されたコーナーケースについてニットピックアップすることを指摘しました:) –

関連する問題