收藏 分享(赏)

C# 枚举.doc

上传人:w89153 文档编号:9278616 上传时间:2019-07-31 格式:DOC 页数:4 大小:28.50KB
下载 相关 举报
C# 枚举.doc_第1页
第1页 / 共4页
C# 枚举.doc_第2页
第2页 / 共4页
C# 枚举.doc_第3页
第3页 / 共4页
C# 枚举.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、看一下 c#中如何定义一个枚举类型:internal enum Color .White, / Assigned a value of 0Red, / Assigned a value of 1Green, / Assigned a value of 2Blue, / Assigned a value of 3Orange / Assigned a value of 4在看一下编译后的样子:internal struct Color : System.Enum .public const Color White = (Color) 0;public const Color Red = (Col

2、or) 1;public const Color Green = (Color) 2;public const Color Blue = (Color) 3;public const Color Orange = (Color) 4;/包含 Color 的变量值,不能写代码直接引用这个实例字段public Int32 value_;在看一下几种不同的输出 Color 值的方法Color c = Color.Blue;Console.WriteLine(c); /“Blue” 泛型格式Console.WriteLine(c.ToString(); /“Blue” 泛型格式Console.Writ

3、eLine(c.ToString(“G“); /“Blue” 泛型格式Console.WriteLine(c.ToString(“D“); /“3”十进制格式Console.WriteLine(c.ToString(“X“); /“03”十六进制格式c#中的 System.Enum 类为我们提供了好多操作枚举类型的方法,下面举一个例子:Color colors = (Color) Enum.GetValues(typeof(Color);Console.WriteLine(“Number of symbols defined: “ + colors.Length);Console.WriteL

4、ine(“Value Symbol - -“);Chapter 12: Enumerated Types and Bit Flags 289foreach (Color c in colors) .Console.WriteLine(“0,5:D 0:G“, c);Value Symbol- -0 White1 Red2 Green3 Blue4 Orange其他方法自己可以去尝试用一下。我们可以在枚举类型上应用位标记,这样在操作它的时候会进一步简单,譬如我们在写 FileAttributes 的时候可以这样写:String file = “C:Boot.ini“;FileAttributes

5、 attributes = File.GetAttributes(file);Console.WriteLine(“Is 0 hidden? 1“, file,(attributes 下面看一下 FileAttributes 的定义:Flags, Serializablepublic enum FileAttributes .Readonly = 0x0001,Hidden = 0x0002,System = 0x0004,Directory = 0x0010,Archive = 0x0020,Device = 0x0040,Normal = 0x0080,Temporary = 0x0100

6、,SparseFile = 0x0200,ReparsePoint = 0x0400,Compressed = 0x0800,Offline = 0x1000,NotContentIndexed = 0x2000,Encrypted = 0x4000/Flags 特性代表位标记的意思,Serializable 特性代表可序列化我们也可以在自己的枚举类型上应用位标记,简化操作。所有 c#中的数组都隐式继承自 System.Array 类型,所有数组都隐式实现IEnumerable,ICollection,和 IList 接口。在对数组进行强制转换的时候要记住值类型的数组不许可被转换成任何其它类型

7、。下面看个例子:FileStream, fs2dim = new FileStream5, 10;Object, o2dim = fs2dim;/错误,维数不同Stream s1dim = (Stream) o2dim;Stream, s2dim = (Stream,) o2dim;String, st2dim = (String,) o2dim;Int32 i1dim = new Int325;/错误值类型不许转换Object o1dim = (Object) i1dim;/可以借助 Array.Copy 实现转换Object ob1dim = new Objecti1dim.Length;

8、Array.Copy(i1dim, ob1dim, i1dim.Length);我们知道 c#中的数组是基于 0 索引的,但是可以用 Array.CreateInstance 创建不是 0 索引的。但是不推荐这样做,因为不是基于 0 索引的数组效率低,而基于 0 索引的数组微软做了好多优化工作,效率会很高的。我们知道 c#中只能实现单继承,但是可以实现多个接口,这样也就隐式的实现了多继承。c#中有两种实现接口的方法,分别为显示实现和隐式实现,下面看个例子:public sealed class Program .public static void Main() .SimpleType st

9、= new SimpleType();st.Dispose();IDisposable d = st;d.Dispose();internal sealed class SimpleType : IDisposable .public void Dispose() . Console.WriteLine(“public Dispose“); void IDisposable.Dispose() . Console.WriteLine(“IDisposable Dispose“); /输出public Dispose /隐式接口的输出IDisposable Dispose /显示接口的输出,注意

10、调用的方式!记住:在调用显示接口实现时一定要强制转换成接口类型才能使用。下面看一下泛型接口和接口约束:public static class SomeType .private static void Test() .Int32 x = 5;Guid g = new Guid();M(x);M(g);/以下调用非法SomeType st=new SomeType();M(st);/约束条件是:T 类型必须实现 IComparable, IConvertible 这两个接口,否则不能调用 M方法。private static Int32 M(T t) where T : IComparable, IConvertible .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报