myType.GetProperties(BindingFlags.Public|BindingFlags.Instance)   参数中的|什么意思?为什么可以这样加?

解决方案 »

  1.   

    这是位屏蔽...使用或运算...举个例子吧^o^假如:
    public enum BindingFlags : uint
    {
       Instance = 1,//值是1, 二进制: 00000001...
       Public = 2   //值是2, 二进制: 00000010...
    }BindingFlags result = BindingFlags.Instance | BindingFlags.Public; //结果等于3, 二进制00000011Console.WriteLine(((int)result).ToString()); //输出结果...
    然后, Type.GetProperties(BindingFlags)方法的内部就可以直接利用&(与运算)来判断, 此次搜索条件是什么...其实, 它在方法内部是做了如下类似的判断...请参考如下代码:
    if ((result & BindingFlags.Instance) == BindingFlags.Instance)
    {
        Console.WriteLine("执行实例成员的搜索");
    }if ((result & BindingFlags.Public) == BindingFlags.Public)
    {
        Console.WriteLine("执行公共成员的搜索");
    }/*1.*/BindingFlags result1 = BindingFlags.Instance | BindingFlags.Public;
    /*2.*/BindingFlags result2 = BindingFlags.Instance;
    /*3.*/BindingFlags result3 = BindingFlags.Public;综合以上代码. 分别测试一下这三种组合的结果吧...您就会明白...^o^
      

  2.   

    哎,你们这帮人就把事情复杂化了,还鄙视人
    public指反射,但找到的属性/特性是public公开访问的
    Instance 只是找到实例的引用对象,类似c++中的实例句柄指针(当然这个是枚举类型)