PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ASP.NET教程 > 正文

    C#基语法之变量(1)

    作者:jing061301来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:变量的定义 被用来存储特定类型的数据,可以根据需要随时改变所存储的数据值。具有名称、类型和值,这就是变量。分类 值类型什么样的...
    变量的定义

          被用来存储特定类型的数据,可以根据需要随时改变所存储的数据值。具有名称、类型和值,这就是变量。

    分类


       值类型
     什么样的变量是值类型呢??看值类型的特点吧...
    1:值类型变量都存储在堆栈中;
    2:访问值类型变量时,一般都是直接访问其实例;
    3:每个值类型变量都有自己的数据副本,因此对一个值类型变量的操作不会影响其他的变量;
    4:复制值类型变量时复制的是变量的值,而不是变量的地址;
    5:值类型的变量值不能为Null,必须有一个确定的值

       引用类型
    1:必须在托管堆中给引用类型分配内存;
    2:必须使用new关键字来创建引用类型的变量;
    3:在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化;
    4:引用类型变量是由垃圾回收机制来管理的;
    5:多个引用类型变量都可以引用同一个对象,这种情况下,对于一个变量的操作会影响另一个变量所引用的同一对象;
    6:引用类型被赋值之前的值都是null;

       看了以上关于值类型跟引用类型的介绍大家是否有什么想法,是不是想问一下什么样的是值类型,什么样的是引用类型呢?其实给大家一个最简单的方法来判断,那就是看他New不New如果使用了New肯定是引用类型,如果不使用可以直接认为是值类型。

     在说类型之间的区别之前我们先来说一下变量的定义格式是:datatype  indentifier;
    例如:

     
    复制代码 代码如下:
    int a;
              int c=0;
              c = a;

    a这个时候会报错“使用了未赋值的局部变量'a'”,这时VS不会允许我们使用这个变量,除非我们给他一个值。如下:
     
    复制代码 代码如下:
    int a=10;
    int c=0;
    c = a;
    这样我们才能正常使用,大家一定要注意。


        下面我用一个例子来说明一下值类型的变量:

     
    复制代码 代码如下:
    int a = 1;
              int c = 0;
              c = a;
              c = c + 1;
    大家可以猜一下C和a的值分别是多少,开始我们定义了两个变量,a=1,c=0;然后a把值给了c,c又加1,结果是
     
    复制代码 代码如下:
    c=2;   a=1;
    这说明什么,虽然说a给了c但是a确不会根据c的变量而改变,这就是值类型的变量

    下面咱们再一起来看看引用类型的变量
    看代码

     
    复制代码 代码如下:
    public class Student
       {
           /// <summary>
           /// 姓名
           /// </summary>
           public string name { get; set; }
           /// <summary>
           /// 年龄
           /// </summary>
           public string age { get; set; }
       }
    首先我们定义一个学生类,
    然后看下面代码

     
    复制代码 代码如下:
    //初始化一个学生类对象s
              Student s = new Student()
              {
                  //姓名为sufei
                  name = "sufei",
                  //年龄为24
                  age = "24"
              };

              //定义一个新的学生类对象s1
              Student s1 = s;
              s1.name = "小李";
              s1.age = "26";
    如果我们还安上面的思路来判断的话输出 的结果应该是
     
    复制代码 代码如下:
    s.name=sufei; s.age=24;
    s1.name=小李; s1.age=26;
    其实呢,这就是引用类型的特别,真实的结果并不是这样的
    看下输出的结果

     
    复制代码 代码如下:
    //现在输出s1 和s的值
             s.name=小李; s.age=26;
             s1.name=小李; s1.age=26;
    为什么他们的值是一样的呢、
    我们并没有修改s的属性值啊
    其实在 Student s1 = s;这一句时s1得到的并不是s的值,而是s的地址。当然修改时也是修改的地址对应的值,当然s的值为根据s1的值改变了

    扩展


    定义变量时,数据类型后面加“?”
    在变量类型后添加“?”表示可空值类型。
    例如:

     
    复制代码 代码如下:
    int a = null;
    以上代码VS会提示错误:无法将 Null 转换成 “int” ,因为它是一种不可以为 null 值的类型。
    但写成以下格式就不会报错了:

     
    复制代码 代码如下:
    int? a = null;
    此时,变量a可以为空(null),并且可以通过它的 HasValue 属性来判断是否有值,并通过 Value 属性获得真正的值。
    它可以通过对包装类型直接赋值的方式隐式创建,如:

     
    复制代码 代码如下:
    int? a = 50;
    如Int32、结构体等这样的类型是不可能为空的,常见的如int,DateTime都是不可能为空的。所以在需要判断是否有值的场合,可以用加问号的可空值类型,如int?,DateTime?等
    变量的基本说明与定义就到这里止。到具体类型时咱们再一个一个的看他们具体的用法。
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-11-654-1.html
    相关热词搜索: C#