這可能是一個簡單而簡單的問題,但我仍然有點混淆爲什麼按位OR
決定使用。假設我有一個類A
四個領域:爲什麼在標誌枚舉中使用按位或運算符的含義AND
class A
{
private int Field1;
private static int Field2;
public int Field3;
public static int Field4;
}
並使用Reflection
獲得字段:如果你是新手與Reflection
var fields = typeof (A).GetFields(BindingFlags.Public | BindingFlags.Static);
,不知道怎樣的方式使用BindingFlags
時,在你的腦袋初始邏輯思維應該是:
這條線將選擇所有靜態或公共領域,因爲使用位或。和預期的結果,你認爲:
Field2
Field3
Field4
但按F5時,其結果將是完全不同的,按位OR
作品AND
:
Field4
爲什麼不使用位AND運算符這可能與後續邏輯思維。像這樣:
var fields = typeof (A).GetFields(BindingFlags.Public & BindingFlags.Static);
我發現單詞MSDN:
用來標誌結合位或操作可能會被認爲是不應該被要求簡單的任務,某些情況下的先進理念。
請任何人都可以在這裏以簡單的方式解釋高級概念瞭解嗎?
當您考慮包容性和排他性OR之間的區別時,「OR」似乎是正確的概念。在這種情況下,「OR」是包容性的,就像說「從商店裏拿一些包含雞蛋或火腿的物品」一樣。這與說「含有雞蛋和火腿」不同。您讀取的[MSDN](http://msdn.microsoft.com/zh-cn/library/6ztex2dc.aspx)中的 –
:您必須指定BindingFlags.Instance **或** BindingFlags.Static才能獲得返回。所以可能是你不能同時列出實例**和**靜態...... ?? – tschmit007
@ tschmit007:這與問題有什麼關係? –