值类型引用类型:C#基础( 4)(C#预定义值类型和引用类型)

  、预定义类型

  1、值类型和引用类型

  C#中数据类型可以分为值类型和引用类型值类型存储在堆栈上而引用类型存储在托管堆上

  如下代码举例

   i=10;

   j=i;

  i和j值都是10并且在内存中会有两个地方存储10.

  再看下面代码

Vector x= Vector;
x.Value=20;
Vector y=x;
Console.WriteLine(y.Value);
y.Value=50;
Console.WriteLine(x.Value);


  Vector是个引用类型引用类型在使用时候需要 来例子化这段代码执行后只有个Vector对象x,y都指向包含该对象内存地址xy存储都是对象引用所以当y改变时候x也会改变所以该输出结果是20和50.

  如果变量是个引用就可以把其值设置为null表示不指向任何对象

  2、CTS类型

  C#预定义类型并没有内置于语言中而是内置于.NET Framework中比如声明类型时实际上是.NET结构.Int32个例子这介绍说明可以把所有基本数据类型看作是支持某些思路方法

  3、预定义值类型

  A、整型

  s 8位有符号整数范围从 -128到127.

   8位无符号整数范围从 0到255.

  16位有符号整数范围从 -32768到32767

  u 16位无符号整数范围从0到65535

  32位有符号整数范围从-2147483648到2147483647

  u32位无符号整数范围从0到4294967295

  long64位有符号整数范围从-231次方到231次方减1

  ulong64位无符号整数范围从0到264次方减1

  B、浮点类型

  float 32位单精度浮点数

  double64位双精度浮点数

  如果代码对某个非整数值如12.3硬编码则编译器般假定该变量是double如果想指定其为float则可以在后面加上f

  C、decimal类型

  该类型是种财务专用数据类型是128位高精度十进制表示法

  要把数据指定为decimal类型只需在数字后面加上M(或者m)

  A、 bool类型

  C#bool类型包含true和false

  B、 类型

  也就是char类型表示个16位unicode

  char类型字面量是采用 单引号 括起来而不是双引号双引号括起来串类型

  4、预定义引用类型

  A、object类型

  这是C#基类所有类都派生自它所以可以使用object引用绑定任何子类型对象object类型执行许多基本般用途思路方法如 Equals GetHashCode,GetType我们需要针对某些思路方法进行“重写”这在后面我们将会学习到

  B、类型

  注意类型是属于引用类型我们来看下面段代码在修改时候实际上是创建了个新而并非修改了原来在我们来看个举例:

  using ;
using .Windows;
gosoa.com
{
   MyFirstClass
  {    
     void Main
    {
       str1="GoSoA.com.cn";
       str2=str1;
      Console.WriteLine("str1="+str1);
      Console.WriteLine("str2="+str2);
      str1="www.GoSoA.com.cn";
      Console.WriteLine("str1="+str1);
      Console.WriteLine("str2="+str2);
    }
  }
}


  在这个举例中会输出

  str1="GoSoA.com.cn";

  str2="GoSoA.com.cn";

  str1="www.GoSoA.com.cn";

  str2="GoSoA.com.cn";

  这和我们所预期引用类型正好相反为什么呢?

  当我们用“GoSoA.com.cn”来化str1时候就在堆上分配了

  对象化str2时候也指向了这个对象当str1改变时候并不是修改了原有对象而是新创建了个对象但str2还是指向原来对象所以str2值并未改变

Tags:  什么是引用类型 引用类型 值类型和引用类型 值类型引用类型

延伸阅读

最新评论

发表评论