深入.NET数据类型(1)

一.值类型和引用类型

  所有的值类型和引用类型的引用都存在“栈”中

  1.值类型

    命名空间:System.ValueType

    值类型数据储存所在的内存区域成为栈

    值类型主要包括基本数据类型和枚举类型,结构

    值类型的赋值原理:

      在栈上复制的真实值

    实例代码:

            //张浩和李明去年身高都是170cm,今年李明长到了180cm,张浩没有变化,
            //输出去年和今年两人身高
            int zhheight = 170;
            int lmheigt = zhheight;
            Console.WriteLine("去年张浩身高是{0}\t李明的身高是{1}", zhheight, lmheigt);
            lmheigt = 180;
            Console.WriteLine("今年张浩身高是{0}\t李明的身高是{1}", zhheight, lmheigt);         

  2.引用类型

    命名空间:System.Onject

    引用类型主要包括数组,类和接口,字符串等

    储存在栈和堆中

    堆上储存的真实对象本身真实对象的属性

    示例代码:

        int[] zhArray={170,60};
           int[] lmArray = zhArray;
            Console.WriteLine("去年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0],zhArray[1], lmArray[0],lmArray[1]);
            Console.WriteLine("================我是高贵的分割线====================");
            lmArray[0] = 180;
           lmArray[1] = 70;
            Console.WriteLine("今年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);






        //解决:

        int[] zhArray = { 170, 60 };
            int[] lmArray = new int[2];
            for (int i = 0; i < zhArray.Length; i++)
            {
                lmArray[i] = zhArray[i];
            }
            Console.WriteLine("去年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);
            Console.WriteLine("================我是高贵的分割线======================");
           
            lmArray[0] = 180;
            lmArray[1] = 70;
            Console.WriteLine("今年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);

  3.细分值类型和引用类型

类别

描述

值类型

基本数据类型

整型:int

&长整型:long

浮点型:float 双精度:double

字符型:char

波尔型:bool

枚举类型

枚举:enum

结构类型

结构:strut

引用类型

基类:System.Object

字符串:string

自定义类:class

接口

接口:interface

数组

数组:int[],string[]

二.结构

  1.定义:

    语法:

         访问修饰符 struct 结构名
      {
        //结构体
      }                

      特点:

      结构中可以有字段,也可以有方法

      定义时,结构中的字段不能被赋初值

    示例代码:

 //定一个自己的结构体
    public struct MyPointer
    {

        //成员 属性   结构体的成员变量不能有初值
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        //结构体中可以定义方法
        public void show() 
        {
           
        }

    }

  2.使用

    可以不用new。直接定义结构的对象即可

    声明结构的对象后,必须给结构的成员赋初值

    示例代码:

     static void Main(string[] args)
        {
            //使用结构体
            MyPointer pointer=new MyPointer();
            pointer.Age = 20;
            pointer.show();
        }

  3.使用经验

    不推荐使用(结构用得越多所消耗的存储空间也越多)

三.构造函数

   示例代码:

  public  class Player
    {
   //无参
        private Player() 
        { 
            //归类:方法(方法)/函数 (面向过程)
        }
        //有参
        public Player(string name)
        {

            //归类:方法(方法)/函数 (面向过程)
        }
    }    

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏静默虚空的博客

排序一 冒泡排序

要点 冒泡排序是一种交换排序。 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 算法思想 它...

2005
来自专栏老马说编程

(27) 剖析包装类 (中) / 计算机程序的思维逻辑

本节继续探讨包装类,主要介绍Integer类,下节介绍Character类,Long与Integer类似,就不再单独介绍了,其他类基本已经介绍完了,不再赘述。 ...

20010
来自专栏codingforever

经典算法巡礼(七) -- 排序之堆排序

很多时候,我们需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。比如你可能启动了若干个定时器,那么下一次处理定时器事件只需要考虑距离现...

312
来自专栏Java爬坑系列

C++指针类型识别正确姿势

  指针是C和C++中编程最复杂也是最有技巧的部分,但对于新手来说,指针无疑是最致命的,让很多人望而退步。不过很多事情都是从陌生开始,然后渐渐熟悉起来的,就像交...

1667
来自专栏彭湖湾的编程世界

【算法】堆排序学习笔记

参考资料 《算法(第4版)》          — — Robert Sedgewick, Kevin Wayne 什么是二叉堆 在了解堆排序之前, 最重要的当...

2188
来自专栏desperate633

LeetCode 3. Longest Substring Without Repeating Characters题目分析

样例 例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为 3。

631
来自专栏柠檬先生

Python 基础 Dict 和 Set 类型

python 什么是dict   例如:     d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }     我们把名称称为k...

2689
来自专栏来自地球男人的部落格

[LeetCode] 79. Word Search

【原题】 Given a 2D board and a word, find if the word exists in the grid. The wo...

17410
来自专栏谈补锅

JS面向对象笔记

0、匿名函数定以后直接调用:(function(numA, numB) { alert(numA + numB); })(3,4);//弹窗7

884
来自专栏IT可乐

由HashMap哈希算法引出的求余%和与运算&转换问题

1103

扫码关注云+社区