C# 教程 在线

2356C# 数据类型

就像仓库,仓库里有货架,货架上有编号:A1,A2,A3...................., 这些编号就可以看做是引用类型,现在来了一批货,有 “土豆,黄瓜,西红柿”,这些就是值类型,如果你想让 A1=土豆,那么就要把土豆搬到 A1 里面去,这就叫装箱,装箱需要耗费人力和工时(也就是耗费CPU和内存),同理拆箱就要把对应编号的货物搬出来,也是需要耗费人力和工时。

2355C# 数据类型

每一个值类型都有一个独立的内存区域保存自己的值,调用它的时候调用的是它的值,而引用类型调用的是内存中的地址,比如定义引用类型 a1=10,这时候在内存中保存的是 10,当把 a1 赋给 a2 的时候,他们两个应用的是同一个内存空间,a2 的值会保存为 a1 的值,当把 a2 改为 20 时,应为 a1 和 a2 引用的是同一个所以 a1 也变成 20 了,这是引用类型,值类型是当把 a1 赋给 a2 时会为 a2 在开一块新的空间保存 a1 的值。当把 a2 改成 20 时就会在 a2 的空间保存 20,和 a1 并无什么关系。

2354C# 数据类型

值类型的特点:

  • 1.不能从值类型派生新类型,但可以结构实现接口;
  • 2.值类型不能包含 null 值;
  • 3.每个值类型都具有一个初始化该类型的默认值的隐式默认构造函数。

2353C# 数据类型

C# 中 String 跟 string 的区别

string 是 C# 中的类,String 是 .net Framework 的类(在 C# IDE 中不会显示蓝色) C# string 映射为 .net Framework 的String 如果用 string, 编译器会把它编译成 String,所以如果直接用 String 就可以让编译器少做一点点工作。

如果使用 C#,建议使用 string,比较符合规范 string 始终代表 System.String(1.x) 或 ::System.String(2.0) ,String 只有在前面有 using System;的时候并且当前命名空间中没有名为 String 的类型(class、struct、delegate、enum)的时候才代表 System.String string 是关键字,String 不是,也就是说 string 不能作为类、结构、枚举、字段、变量、方法、属性的名称,而 String 可以。

String 是 CLR 的类型名称(也算是关键字),而 string 是 C# 中的关键字。string 在编译时候 C# 编译器会默认将其转换为 String,在这里会多增加几行转换的代码。很多时候都是建议使用 CLR 的类型而不要使用 C# 的类型(这是专家的建议)。比如说还有:使用 int 的时候最好使用 Int32 等。很多时候都是一个习惯问题,规范问题。还有一个不同就是在 VS 中表现的颜色不一样:String 是绿色,string 是蓝色。

2352C# 数据类型

obj 和int之间关系

using System;
namespace RectangleApplication
{
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            int a=9;
            object obj;
            obj = a;
            obj =10;
            Console.WriteLine("2: {0}", a);   // 输出:2: 9
            Console.WriteLine("1: {0}", obj); // 输出:1: 10
            Console.ReadLine();
        }
    }
} 

设置值 int a=9; obj=a; 当obj改变不会对 int a 进行改变,object 只是复制了 int a 的值出来然后对其操作而已。不会影响到 int 原来的值。