C#第二次作业(知识杂记)
1.
short x=32767;
int y=2147483647;
long z=9223372036854775807;
对于常数类型的变量个人认为现在面对的问题大多数并不是空间方面的问题,所以并不经常使用short类型的变量来压缩空间,或者说对算法占用空间的常数级变化感官不明显,更多的关注方向在于对于算法时间的优化和定量。
对于long与ulong之类的无符号类型的变量没有太多看法。。或者说感觉使用次数比较少。不过可以拓展变量的上限,代价是失去了下限。更好的情况不如编译高精度算法来代替,使用数组来存储更大的变量,当然代价是使用更多的空间。
x=(short)y;
个人感觉倾向于类似强制转换。与c++有很多相似的概念所以比较容易理解。显然上面这个语句已经错了。
强制转换某些时候会产生不必要的bug。
2.
switch语句的使用偏向于大量反复的使用case,而使用case语句就必须使用大量的break,否则就会产生bug
int testme = 3;
switch (testme)
{
case 2:
case 3:
testme = 1;
break;
default:
testme = 1;
break;
}
但是当case语句中什么都没有的时候可以不使用case,无法理解。
事实上逻辑关系比较难以掌握,通过case值来决定下一步的操作并不是一件轻松就能完成的方法。
3.
enum Days {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
实际上这个日期计数只能用在比较粗糙的环境中(即不计大小月),不过只是为了测试。
枚举类型在c#内是一种单独的数据类型,即声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
通过一一列举变量的值,来把变量的值限制于列举出来的值的范围内。
但是当赋值超过列举变量的值或者不等于时会出现bug或者无输出的情况。
int meeting
meeting=(Days)40;
参考别人的操作进行的尝试,事实上如果我自身定义的days中含有这个数就很明显的可以,但是如果不处于枚举类型中就无法理解会赋值一个数,也许有优化的空间。
4.
字符串string的处理较为熟悉,或者说我比较倾向于把它理解为一个由char构成的数组来处理。
实际问题中也确实可以这么处理,需要注意的是其指针同样是从0开始计数的,也就是说第3个字符指针为2。
字符串并没有多次试验所以没有发现特殊的地方。