深入.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 条评论
登录 后参与评论

相关文章

来自专栏数说工作室

【SAS Says】基础篇:3. 描述数据

本节介绍如何利用SAS写一份数据报告,给出数据的基本信息。 从3.11开始的内容,是留给处女座的,主要说如何用proc tabulate和proc report...

26910
来自专栏云霄雨霁

函数依赖总结

932
来自专栏阿凯的Excel

或关系求均值(函数虐心版)

最近醉心于Python的学习和分享,好久没有分享Excel相关的文章了。 熟悉我文章的朋友,都知道我特喜欢分享数组函数,也特喜欢分享那种很长的函数。 前几天有朋...

3466
来自专栏量化投资与机器学习

【精心解读】用pandas处理大数据——节省90%内存消耗的小贴士

本文我们讨论 pandas 的内存使用,展示怎样简单地为数据列选择合适的数据类型,就能够减少 dataframe 近 90% 的内存占用。

1.5K5
来自专栏程序猿DD

第六章 正则表达式的构建

第六章 正则表达式的构建 对于一门语言的掌握程度怎么样,可以有两个角度来衡量:读和写。 不仅要看懂别人的解决方案,也要能独立地解决问题。代码是这样,正则表达式也...

1836
来自专栏C#

数组未必一定需从0开始,谈一下非0开始的数组

  谈到数组时,当被问及数组是从什么数开始时,估计大部分程序员都会直接说出数组当然是从0开始的。这个回答当然没有错,现在我们就来了解一下C#中的下限非...

1735
来自专栏后端技术探索

是时候来彻底了解字符编码了!!

你是否认为“ASCII码 = 一个字符就是8比特”?你是否认为一个字节就是一个字符,一个字符就是8比特?你是否还认为你是否还认为UTF-8就是用8比特表示一个字...

642
来自专栏机器人网

ABB机器人编程方式

1、指令表IL   指令表(IL)由一系列指令组成。每条指令都由一个新行开始,包含一个操作符以及和操作符类型相关的一个或多个操作数,并用逗号分开。在指令前可以有...

2706
来自专栏Python攻城狮

Python数据科学(七)- 资料清理(Ⅱ)1.资料转换2.处理时间格式资料3.重塑资料4.学习正则表达式5.实例处理

注意:这里的时间转换后的格式可以根据需要设定,eg:dt.strftime('%Y/%m/%d')

893
来自专栏数值分析与有限元编程

可视化 | 一个三角形常应变单元后处理例子

昨天提到了应力云图,其实质是用不同的颜色填充等值线。有了结点的应力值,单元内任意一点的应力值是通过插值实现的。下面来看一个悬臂梁的综合后处理。 如图所示,一个悬...

2537

扫描关注云+社区