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

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

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

  • 相关阅读:
    SELECT IDENT_CURRENT(tableName)和自增长列的纠结
    [置顶]c# 设计模式(1)一 创建型
    我们互联网生活因家庭服务器改变
    互联网创业不妨先放下平台梦
    影响未来的应用ifttt,互联网自主神经系统的又一个有力证据
    什么是ifttt,ifttt怎么玩? ifttt操作体验具体步骤
    杰出企业家的20个好习惯
    折叠分组表格中重用Cell导致的问题
    使用AChartEngine画折线图
    MSSQL获取当前插入的ID号及在高并发的时候处理方式
  • 原文地址:https://www.cnblogs.com/chimingyang/p/5333594.html
Copyright © 2011-2022 走看看