本文介绍了这个C#编译器有什么问题:D你能猜出Eric Gunnarsson的错误吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 //运行此代码并由编译器查找明显的错误 命名空格FlagCheck { 使用System; [标志] enum SomeFlags { 无= 0, 一, 二, 三, 四, 五, 六, 全部=一个|两个|三|四个|五|六个 } class Class1 { [STAThread] static void Main(string [] args) { SomeFlags f; f = SomeFlags.Four; //设置标志四个,只有四个,准备一个 supprise if((f& SomeFlags.One)> 0) { Console.WriteLine(标记一个已设置); } 如果((f& SomeFlags.Two)> 0) { Console.WriteLine(" flag two is set); } if((f& SomeFlags.Three)> 0) { Console.WriteLine(" ;标志三设置); } if((f& SomeFlags.Four)> 0) { Console.WriteLine(标志四设置); } if((f& SomeFlags.Five)> 0) { Console.WriteLine(" flag five is set); } if((f& SomeFlags.Six)> 0) { Console.WriteLine(" flag six set set") ;); } Console.ReadLine(); } } } 解决方案 你写的是什么,你的意思是两个不同的东西。编译器是 罚款。 你有: enum SomeFlags { 无= 0,// 0000 一,// 0001 二,// 0010 三,// 0011 四,// 0100 五,// 0101 六,// 0110 全部=一个|两个|三|四个|五|六// 0111 }; 你的意思是: enum SomeFlags { 无= 0, 一个= 1, 两个= 2, 三个= 4, 四= 8, 五= 16, 六= 32, 全部=一两个|三|四个|五|六个 } 更改你的代码,工作正常。 - Alan 没问题。 你有:枚举SomeFlags {无= 0,// 0000 一,// 0001 二,// 0010 三,// 0011 四,// 0100 五,// 0101 六,// 0110 全部=一个|两个|三|四个|五|六// 0111 }; 你的意思是:枚举SomeFlags {无= 0,一个= 1,两个= 2,三个= 4,四个= 8,五个= 16,六个= 32,全部=一个|两个|三|四个|五|六, 更改你的代码,工作正常。 - Alan // Run this code and look for his obvious error by the compilernamespace FlagCheck{using System; [Flags]enum SomeFlags{None = 0,One,Two,Three,Four,Five,Six,All = One | Two | Three | Four | Five | Six} class Class1{[STAThread]static void Main(string[] args){SomeFlags f; f = SomeFlags.Four; // Set flag FOUR and ONLY FOUR, get ready for asupprise if ( (f & SomeFlags.One) > 0){Console.WriteLine("flag one is set");} if ( (f & SomeFlags.Two) > 0){Console.WriteLine("flag two is set");} if ( (f & SomeFlags.Three) > 0){Console.WriteLine("flag three is set");} if ( (f & SomeFlags.Four) > 0){Console.WriteLine("flag four is set");} if ( (f & SomeFlags.Five) > 0){Console.WriteLine("flag five is set");} if ( (f & SomeFlags.Six) > 0){Console.WriteLine("flag six is set");}Console.ReadLine();}}} 解决方案 What you wrote and what you meant are two different things. The compiler isfine. You have:enum SomeFlags{None = 0, // 0000One, // 0001Two, // 0010Three, // 0011Four, // 0100Five, // 0101Six, // 0110All = One | Two | Three | Four | Five | Six // 0111}; You meant:enum SomeFlags{None = 0,One = 1,Two = 2,Three = 4,Four = 8,Five = 16,Six = 32,All = One | Two | Three | Four | Five | Six} Change your code and it works fine. -- Alanis fine. You have: enum SomeFlags { None = 0, // 0000 One, // 0001 Two, // 0010 Three, // 0011 Four, // 0100 Five, // 0101 Six, // 0110 All = One | Two | Three | Four | Five | Six // 0111 }; You meant: enum SomeFlags { None = 0, One = 1, Two = 2, Three = 4, Four = 8, Five = 16, Six = 32, All = One | Two | Three | Four | Five | Six } Change your code and it works fine. -- Alan 这篇关于这个C#编译器有什么问题:D你能猜出Eric Gunnarsson的错误吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 10-28 09:08