1.创建一个控制台应用程序,在其中申明一个int类型的便利ls并初始化为927,
一个Byte类型便利shj并初始化为255,最后输出。
static void Main(string[] args)
{
int ls = 927; //声明一个int类型的变量ls
Byte shj = 255; //声明一个Byte类型的变量shj
Console.Write("ls={0}",ls);
Console.Write("shj={0}",shj);
Console.ReadLine();
}
2. 对于浮点型,一般默认为double类型,可以强制使用F或f来指定为float类型。
float型精确到7位数,double精确到15~16型。
对于bool类型,主要是用来表示true跟false值的。
3. 创建一个控制台应用程序,在其中创建一个类C,在该类中建立一个字段Value,
并初始化为0.然后在程序的其他位置通过new创建对该类的引用类型变量输出。
class Program
{
class C //声明一个类C
{
public int Value = 0; //声明一个公共int类型的变量Value
}
static void Main(string[] args)
{
int v1 = 0;
int v2 = v1;
v2 = 927;
C r1 = new C(); //使用new关键字创建引用对象
C r2 = r1; //使r1等于r2
r2.Value = 112; //设置变量r2的Value值
Console.Write("Value:{0},{1}",v1,v2);
Console.Write("Refs:{0},{1}",r1.Value,r2.Value);
Console.ReadLine();
}
}
程序运行结果为:Value:0,927
Refs:112,112
4.从概念上来讲,值类型直接存储其值,而引用类型存储对其值的引用。从内存空间上来讲,值类型是在栈中操作,而引用类型则是在堆中分配存储单元。栈在编译时就
分配好内存空间,在代码中有栈的明确定义;而堆是程序运行中分配的内存空间,可以根据程序的运行情况动态地分配内存的大小。因此,值类型总是在内存中占用
一个预定义的字节数。而引用类型的变量则在栈中分配一个内存空间,这个空间包含的是对另一个内存位置的引用,这个位置是托管堆中的一个地址,即存放次变量
实际的地方。
4.1 对于值类型的实例,如果作为方法中的局部变量,则被创建在线程上。如果该实例
作为类型的成员,则作为类型成员的一部分,连同其他类型字段存放在托管堆上。
每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。例如:
int i = new int(); == Int32 i = new Int32(); == int i = 0; == Int32 i = 0;
使用new运算符时,将调用特定类型的默认构造函数并对变量附以默认值。在上例中,
默认构造函数将值0赋给了i。
5.创建一个控制台应用程序,通过使用枚举来判断当前系统日期是星期几。
namespace ConsoleApplication1
{
enum MyDate
{
Sun = 0,
Mon = 1,
Tue = 2,
Wed = 3,
Thi = 4,
Fri = 5,
Sat = 6
}
class Program
{
static void Main(string[] args)
{
int k = (int)DateTime.Now.DayOfWeek; //获取当前星期几的返回值
switch (k)
{
case (int)MyDate.Sun:
Console.WriteLine("今天是周日");break;
case (int)MyDate.Mon:
Console.WriteLine("今天是周一"); break;
case (int)MyDate.Tue:
Console.WriteLine("今天是周二"); break;
case (int)MyDate.Wed:
Console.WriteLine("今天是周三"); break;
case (int)MyDate.Thi:
Console.WriteLine("今天是周四"); break;
case (int)MyDate.Fri:
Console.WriteLine("今天是周五"); break;
case (int)MyDate.Sat:
Console.WriteLine("今天是周六"); break;
default: Console.WriteLine("调用时间错误!"); break;
}
Console.ReadLine();
}
}
}
6.装箱与拆箱
装箱就是将一个值类型转化成一个对象类型(object),而拆箱则是将一个对象类型显示转化
为一个值类型,对于装箱而言,它是将被装箱的值类型复制一个副本来转化;而对于拆箱而言,
需要注意类型的兼容性,例如,不能讲一个值为“string”的object类型转化为int类型。