C#学习--值与引用

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类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值