Puede ser una pregunta fácil y simple, pero todavía tengo un poco de confusión por la razón por la cual se decide utilizar bitwise OR
. Suponga que tengo una clase A
con cuatro campos:Por qué se usa el operador OR bit a bit en la enumeración de indicador con el significado AND
class A
{
private int Field1;
private static int Field2;
public int Field3;
public static int Field4;
}
Y el uso de Reflection
para obtener campos:
var fields = typeof (A).GetFields(BindingFlags.Public | BindingFlags.Static);
Si usted es novato con Reflection
y no saben la manera cómo utilizar BindingFlags
, la El pensamiento lógico inicial en su cabeza sería:
Esta línea seleccionará todos los campos estáticos O públicos porque se usa O a nivel de bits. Y el Resultado esperado que piensa:
Field2
Field3
Field4
Pero al golpear F5, el resultado será totalmente diferente, bit a bit OR
obras como AND
:
Field4
por qué no utilizar operador AND que podría seguir con la pensamiento lógico de esta manera:
var fields = typeof (A).GetFields(BindingFlags.Public & BindingFlags.Static);
encontré palabras MSDN:
la operación OR bit a bit utilizado para combinar las banderas se podría considerar un concepto avanzado en algunas circunstancias que no deberían ser necesarios para tareas sencillas.
Por favor, podría alguien explicar el concepto avance aquí en forma sencilla para la comprensión?
'OR' parece ser el concepto correcto aquí cuando se considera la diferencia entre O inclusivo y exclusivo. En este caso, el 'OR 'es inclusivo, lo mismo que decir" recoger algunos artículos de la tienda que contienen huevos o jamón ". Eso es diferente a decir "que contienen huevos Y jamón". –
en [MSDN] (http://msdn.microsoft.com/en-us/library/6ztex2dc.aspx) lea: debe especificar BindingFlags.Instance ** o ** BindingFlags.Static para obtener un retorno. . Entonces, ¿puede ser que no pueda listar la instancia ** y ** estática al mismo tiempo ... ?? – tschmit007
@ tschmit007: ¿Qué tiene eso que ver con la pregunta? –