结构与枚举
1、 结构
(1)结构与类的区别:
1. 结构是值类型,而类属于引用;
2. 结构的实例化可以用new,也可以不用的;
3. 结构的构造函数默认为无参的,当人为的定义了一个有参的构造函数后,实例化的时候仍然可以调用无参的,而且,人为的定义构造函数一定要带参数。
4. 结构不能继承结构或类,所有的结构都是继承自system.valuetype,system.valuetype继承system.object。但是结构可以实现接口;
(2)结构中的字段不能够赋初值。
(3)结构的访问修饰符:public,internal,默认:internal;
成员访问修饰符可以是不private,public,不能为protected
例如:
struct stu
{
static in iu=23;//静态字段可以 ,const同static
public int age;//不能赋初值
public stu(int age)//必须带参数
{
this.age = age;
}
}
static void Main(string[] args)
{
stu s = new stu();//new生成实例
s.age = 17;
stu s1;//直接生成实例
s1.age = 14;
Console.WriteLine(stu.iu);//由结构名调用;
Console.WriteLine(s.age+" "+s1.age);
}
2、 枚举
(1)关键字:enum;
(2)每种枚举类型都可以是除 char以外的任何×××,枚举元素的默认值基础类型是int,默认情况下,第一个枚举数的值为
0;后面元素依次递增1。
当属性有多个枚举值的时候,可以采用位枚举。
[Flags]
enum Wei
{
A = 1,
B = 2,
C = 4,
D = 8
}
static void Main(string[] args)
{
Wei w = Wei.A | Wei.B | Wei.C;
Console.WriteLine(w);
foreach (string str in Enum.GetNames(typeof(ConsoleColor)))//获取枚举类中的元素名称
{
Console.WriteLine(str);
}
Console.WriteLine((Wei)6);
Console.WriteLine(Enum.Format(typeof(Wei),2,"G"));//B Console.WriteLine(Enum.Format(typeof(Wei),2,"X"));//2
Console.WriteLine(Enum.Format(typeof(Wei), 2, "D"));//00000002 Console.WriteLine(Enum.Format(typeof(Wei), 2, "F"));//B
二维数组,交错数组的存取,
//二维数组
int[,] arr = new int[,] { {1,2,3,4},{5,6,7,8}};
foreach (int i in arr)
{
Console.WriteLine(i);
}
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.Write(arr[i,j]+"\t");
}
Console.WriteLine();
}
//交错数组
int[][] arr1 = new int[3][];
arr1[0] = new int[] { 1,2,3};
arr1[1] = new int[] { 1, 2 };
arr1[2] = new int[] { 1,2,3,4};
foreach (int[] i in arr1)
{
foreach (int j in i)
{
Console.WriteLine(j);
}
}
//三维数组
int[ , ,] arr2 = new int[ ,,] { {{1,2},{3,4}}, {{5,6},{7,8}}, {{9,10},{11,12}}};
foreach(int i in arr2)
{
Console.WriteLine(i);
}
for (int i = 0; i < arr2.GetLength(0);i++ )
{
for (int j = 0; j < arr2.GetLength(1);j++ )
{
for (int k = 0; k < arr2.GetLength(2);k++ )
{
Console.WriteLine(arr2[i,j,k]);
}
}
}
转载于:https://blog.51cto.com/3298646/615111