zoukankan      html  css  js  c++  java
  • 深入C#数据类型

    一:值类型与引用类型

    值类型源于System.ValueType家族,值类型包括基本数据类型,结构类型和枚举类型。

     值类型:在栈上储存的真实的值

    引用类型源于System.Object家族,在C#中引用类型主要包括数组、类、接口、string类型等。

     引用类型:在栈和堆上都要分配空间。

    值类型例题:

     1 class Program
     2 {
     3          static void Main(string[]args)
     4          {
     5              int heightZhang=170;
     6              int heightLi=heightZhang;
     7              Console.WriteLine("去年--张浩的身高是:"+heightZhang+“李明的身高是:”+heightLi);
     8              heightLi=180 9              Console.WriteLine("今年--张浩的身高是:"+heightZhang+“李明的身高是:”+heightLi);
    10              Console.ReadLine()
    11              

    图解:

     

    引用类型图解:

    注意:值传递和引用传递判定依据是有没有ref关键字

    结论:

     

    01.如果方法的参数类型本身就是引用类型,那么对参数值的修改会永久保存

    例如:public void TP(SE se)

    {

        se.Count++;//真正的修改se对象的Count值

    }

    02.如果方法的参数类型本身是值类型,又没有ref修饰,那么对参数值的修改,不会永久保存()

    03.如果方法的参数类型本身是值类型,但是有ref修饰,那么对象参数值的修改,也会永久保存。

     

    值类型传递 :不带ref的参数传递   SE se

     

    引用类型传递:带ref的参数传递 

    二:结构

    结构体

                 /*01.结构体不用new,就可以直接对其属性赋值

                 *02.结构体中可以有字段,属性和方法

                 *03.结构体是值类型,类是引用类型

                 *04.在结构体中不能给字段赋初值,但是类中可以.

                 *05.结构体中没有默认构造函数,但类中有默认构造函数

    三:构造函数

    构造函数

        默认如果定义了一个类,系统会自动的生成一个和该类名称相同,并且没有返回值类型,甚至连Void都没有的方法,该方法就称为构造函数!

    Student stu=new Student();

    注意问题:值类型的直接父类都是ValueType,而ValueType又继承自Object

    特殊的值类型:枚举和结构体

    特殊的引用类型:数组和接口

  • 相关阅读:
    mysql安装(docker)
    Spark安装(standalone)
    hbase安装
    hadoop安装
    TICK/TIGK运维栈安装运行 docker-compose【下】
    域名解析
    Windows下的maven项目部署在Linux服务器
    SpringMVC访问静态资源和WEB-INF下的JSP文件
    Linux执行SQL文件
    远程访问Tomcat 403 Access Denied
  • 原文地址:https://www.cnblogs.com/chimingyang/p/5333594.html
Copyright © 2011-2022 走看看