C# invokemember()函数的
最近在学GDI+,参照了书上的例子做一个视觉效果浏览器,一步一步敲代码慢慢理解,结果完了发现运行的效果不同,我写的有BUG,用Beyond Compare对比给出的源代码,发现竟然是下面这条InvokeMember语句的细微不同导致的,完全没意识到这个不同会影响运行效果,求大牛讲解讲解:这是我的语句:
VisualStyleElement element = (VisualStyleElement)t.InvokeMember(prop.Name, BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Static, null, null, null);
这是源代码语句:
VisualStyleElement element = (VisualStyleElement)t.InvokeMember(prop.Name, BindingFlags.Static | BindingFlags.GetProperty | BindingFlags.Public, null, null, null);
不同点就在于InvokeMember函数的第二个参数,没有查到|符号具体是什么含义,但是猜想应该是并列的意思,我只是改了一下顺序,运行的结果就不一样了,大概是对|符号的含义没有理解清楚吧,求指点。。。 GDI+ InvokeMember 参数 --------------------编程问答-------------------- BindingFlags.Static 包含静态函数,各个枚举值表示的意思,msdn上写的很清楚 --------------------编程问答--------------------
感谢这么迅速的回答,MSDN我看了,没有看出什么端倪,我不太理解的是:
BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Static
BindingFlags.Static | BindingFlags.GetProperty | BindingFlags.Public
BindingFlags参数的这两种写法会有什么差别 --------------------编程问答-------------------- 理论上没区别,你怎么就认为是这句引起的?
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答--------------------
我改成源代码的语句。。。。然后BUG就没了,其他都没变 --------------------编程问答-------------------- 那个符号表示多个组合方式,你遇到什么情况 --------------------编程问答--------------------
感谢二位版主的启发,又测试了几遍,确实是没啥区别,BUG是在改变TractBar的值之后才会有的,不管是哪个代码都会有,应该不是这个语句的问题了,我再自己看看,因为还没做完,但是看了后面的一些内容,都是一些体验优化了,跟这个不太有关系了,所以觉得应该是这个地方有问题,大概后面还会有一些优化顺道解决了这个问题吧,我接着做,完了再分析分析
补充:.NET技术 , C#