代码一:
private static byte[] wmLinkVal = new byte[] { 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x66, 0x69, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x63, 0x65, 110, 0x73, 0x65, 0x2e, 0x70, 0x68, 0x70 }; private static byte[] wmRegVal = new byte[] { 0x56, 0x69, 0x73, 0x69, 0x66, 0x69, 0x72, 0x65, 0x20, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x45, 100, 0x69, 0x74, 0x69, 0x6f, 110 };
代码二:
protected virtual void LoadWm(GaugeTypes type) { if (CS$<>9__CachedAnonymousMethodDelegatef == null) { CS$<>9__CachedAnonymousMethodDelegatef = new Func<byte, char>(null, (IntPtr) <LoadWm>b__d); } if (CS$<>9__CachedAnonymousMethodDelegate10 == null) { CS$<>9__CachedAnonymousMethodDelegate10 = new Func<byte, char>(null, (IntPtr) <LoadWm>b__e); } this.CreateWmElement(type, new string(Enumerable.Select<byte, char>(wmRegVal, CS$<>9__CachedAnonymousMethodDelegatef).ToArray<char>()), new string(Enumerable.Select<byte, char>(wmLinkVal, CS$<>9__CachedAnonymousMethodDelegate10).ToArray<char>())); }
不明白啊,我知道是16进制的数组,但为什么这样写呢,直接用 Int 数组不就行了吗?
代码一中定义的数组wmLinkVal 在代码二这个函数中被用到:
这上面的二段代码是什么意思?看不懂,请大家指点。谢谢!
代码一、你有有没有感觉用十六进制码对于位的表示来说很直接举个例子
0x68=》(0110 1000) 如果用十进制表示你还要自己去换算
对整数做位运算 0x68|0x23比103|35对于开发人员来说要友好的多。
代码二、这是.NET Reflector反编译的代码。你只要把CS$<>9__CachedAnonymousMethodDelegatef 看作一个委托就好了
举个例子C#代码
protected virtual void LoadWm() { Delegate d = new Func<int, int, int>((a,b) => a + b); }
反编译的代码
protected virtual void LoadWm() { if (CS$<>9__CachedAnonymousMethodDelegate1 == null) { CS$<>9__CachedAnonymousMethodDelegate1 = new Func<int, int, int>(null, (IntPtr) <LoadWm>b__0); } Delegate delegate2 = CS$<>9__CachedAnonymousMethodDelegate1; }
哈哈,高手自在园中。明白了,谢谢!!!
代码二:中的CS$<>9__CachedAnonymousMethodDelegate1在C#中编译会报错,如果我需要编译通过,有什么办法吗?