1、结构体和枚举一样,都是在代码的主体外部声明的。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace StructEnum 7 { 8 enum orientation : byte 9 { 10 north = 1, 11 south = 2, 12 east = 3, 13 west = 4 14 } 15 struct route 16 { 17 public orientation direction; 18 public double distance; 19 20 } 21 class Program 22 { 23 static void Main(string[] args) 24 { 25 route myRoute; 26 double myDistance; 27 int myDirection; 28 myDistance = Convert.ToDouble(Console.ReadLine()); 29 myDirection = Convert.ToInt32(Console.ReadLine()); 30 myRoute.distance = myDistance; 31 myRoute.direction = (orientation)myDirection; 32 Console.WriteLine("distance:{0},direction:{1}",myRoute.distance,myRoute.direction); 33 } 34 } 35 }
输入4 4
输出 4 west
2.C#结构体与C结构体类似
3.虽然枚举有类型,但是取枚举的值时,仍然需要进行类型转换1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace StructEnum 7 { 8 enum orientation:byte 9 { 10 north = 1, 11 south = 2, 12 east = 3, 13 west = 4 14 } 15 struct route 16 { 17 public orientation direction; 18 public double distance; 19 public int dirct; 20 } 21 class Program 22 { 23 static void Main(string[] args) 24 { 25 route myRoute,mRoute; 26 double myDistance; 27 int myDirection; 28 myDistance = Convert.ToDouble(Console.ReadLine()); 29 myDirection = Convert.ToInt32(Console.ReadLine()); 30 myRoute.distance = myDistance; 31 myRoute.direction = (orientation)myDirection; 32 mRoute.dirct = orientation.north; //output north 33 Console.WriteLine("distance:{0},direction:{1}",myRoute.distance,myRoute.direction); 34 Console.WriteLine("mRoute.dirct={0}",mRoute.dirct); 35 } 36 } 37 }
第32行,编辑错误。
把 mRoute.dirct = orientation.north; 改为 mRoute.dirct = (int)orientation.north;
输出mRoute.dirct = 1。