您的位置:首页 > 其它

复杂类型知识点和思考练习,及书里发现的错误

2009-09-19 19:36 344 查看
知识点

枚举enmu:是一组已命名的数值常量(元素必须是整型),为一组在逻辑上密不可分的整数值提供便于记忆的符号。
先要在类中声明枚举类型,然后才能象其他类型那样使用该类型。枚举类型的变量在一个时刻只能取枚举中的某一个元素的值。
默认情况下,枚举的基础类型为int,默认值第一个为0,可以通过 emnu 枚举类型名 : long{...}的方式将基础类型改为其他类型的整型。
改变枚举元素的值可以在申明时,对枚举元素进行赋值。在编程时,逻辑上可以将枚举变量当做整型使用,只不过这些变量的值不经过转换是不可以直接和int等类型变量发生关联和使用的。

数组:是使用类型声明的,如 int[] strArr=new int[5];
数组中的元素除了基本数据类型外,还可以是struct,enum和类类型。

思考练习

枚举

using System;
namespace ComplexType
{
public class ComplexTypeEnum
{
enum WeekDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
enum Range : long { MinInt32 = -2147483648, MaxInt32 = 2147483647 }
static void Main()
{
WeekDays weekday1;
weekday1 = WeekDays.Sunday;
int d = (int)weekday1;
//int d=(int)weekday1.Sunday;//这种写法是错的,因为变量只代表一个枚举中的元素值。
//Console.WriteLine(weekday.Tuesday);//这种写法是错的,因为变量只代表一个枚举中的元素值。
Console.WriteLine(WeekDays.Monday);//就显示“Monday”
Console.WriteLine(weekday1);
Console.WriteLine(d);
Console.ReadLine();
for (WeekDays dayVal = WeekDays.Monday; dayVal <= WeekDays.Sunday; dayVal++)//也可以用在循环语句里!
{
Console.WriteLine(dayVal);
Console.ReadLine();
}
Range rangeMin = Range.MinInt32, rangeMax = Range.MaxInt32;
long x = (long)rangeMin, y = (long)rangeMax;
Console.WriteLine("The max value is {0}", y);
Console.WriteLine("The min value is {0}", x);
Console.ReadLine();
}
}

}



数组

using System;
namespace ComplexType
{
public class ComplexTypeArray
{
enum WeekDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
static void Main()
{
/*
int[] i;
i=new int[5];到这都是对的,这时赋值一般都用循环语句进行数组内各元素进行赋值。
i={1,2,3,4,5};不能这样写,已经new,但同时没有初始化的数组,不能直接用{}进行初始化,可以改成下面的方式,就可以了
i=new int[]{1,2,3,4,5};
*/

int[] ii = new int[7];//仅写成 “int[] ii;”时,是没有赋值给数组的,写成“int[] ii=new int[7];”后,所有元素都被赋值0
Console.WriteLine(ii[6]);
int[] i ={ 1, 2, 3, 4, 5 };//这是正确的
int[] j = new int[] { 1, 2, 3, 4, 5 };//一般写法
/*下一行写法也是错的,直接用{}进行赋值,只能在刚定义数组变量时才可,如:int[] i={1,2,3,4,5};
int[] i;i={1,2,3,4,5};
*/
//多维数组
int[,] k = new int[2, 3];
WeekDays[] weekDayArr0 = new WeekDays[7];//此时已赋值,默认均为枚举的第一个元素的值
Console.WriteLine(weekDayArr0[5]);
WeekDays[] weekDayArr = new WeekDays[] { WeekDays.Friday, WeekDays.Monday, WeekDays.Thursday, WeekDays.Monday, WeekDays.Friday, WeekDays.Sunday };
for (int p = 0; p <= 5; p++)
{
Console.WriteLine(weekDayArr[p]);
}
Console.ReadLine();

int[] testForeach = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int n = 0;
foreach (int foreachUnit in testForeach)
{
int m;
if (n < 2) { n += 1; goto L2; }
else goto L1;
L1: m = 0;//将声明放在里面,m每次循环都被声明,每次都被初始化为0,上次循环的内容已经没有了,goto 的标签所包含的内容不能最好不要放声明的内容,即不要放如:int m;的内容,因为即使各条跳转语句经过的路线都不重复或相交,各条跳转的标签处有同样的申明语句,如同样的int m;看上去,好像不同的运行路线,但在循环体内是不允许一个循环周期内同时申明同样的变量的,哪怕这个申明的动作在实际程序运行中并不会重复!
goto L3;
//L1:m+=1;
L2: m = 1;
L3: Console.WriteLine("testForeach[{0}] is {1}", m, foreachUnit);
}

Console.ReadLine();
}
}

}



书内错误

P44页,中间一行的代码 int d=…写的是错的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐