【C#语言入门】04. 详解类型、变量与对象(上)

【C#语言入门】04. 详解类型、变量与对象(上)

一、什么是类型(Type)

  • 又叫做数据类型(Data Type)
    • A data type is a homogeneous collection of values, effectively presented, equipped with a set of operations which manipulate these values.数据类型是同一种值的集合,这说明数据类型不是凭空捏造出来的,而是先有现实中的一些值之后,再把他们归纳整理出来的,并且每一种数据类型都有只属于他的一套操作运算。
    • 是数据在内存中存储的“型号”
    • 小内存容纳大尺寸数据会丢失精确度、发生错误
    • 大内存容纳小尺寸数据会导致浪费
    • 编程语言的数据类型与数学中的数据类型不完全相同(例如3/4=0.75,但在编程语言中3/4=0,因为是int类型
  • 强类型语言与弱类型语言的比较
    • 如果编程语言中的编程语言收到数据类型的约束,那就是强类型语言,如果不受约束或者收到的约束不严谨,那就是弱类型语言。
    • C#中的dynamic是动态数据类型,类似于弱类型语言

二、类型在C#语言中的作用

  • 一个C#类型中所包含的信息有:
    • 存储此类型变量所需的内存空间大小
    • 此类型的值可表示的最大、最小值范围(一般来说内存空间和值的范围相关联)
    • 此类型所包含的成员(如方法、属性、事件等)
    • 此类型由什么基类派生而来
    • 程序运行的时候,此类型的变量在分配在内存的什么位置
      • Stack简介(栈)
      • Stack overflow
      • Heap简介(堆)(实例永远在堆里)
      • 使用Performance Monitor查看进度的堆内存使用量
      • 关于内存泄漏
    • 此类型所允许的操作(运算)

1. 整数类型表以及浮点类型表

整数类型大小浮点类型大小
sbyteSigned 8-bitfloatSigned 32-bit
byteUnsigned 8-bitdoubleSigned 64-bit
charUnicode 16-bit
shortSigned 16-bit
ushortUnsigned 16-bit
intSigned 32-bit
uintUnsigned 32-bit
longSigned 64-bit
ulongUnsigned 64-bit

2. 程序的静态与动态

程序的静态与动态是不同于类的成员的动态和静态的。那什么是程序的静态和动态呢?区分在于程序是否运行,在编写或在编译时,为静态时期,而在运行或者debug时,为动态时期。 (可以简单的理解为,静态的程序是在硬盘里,动态的程序是在内存里)

3. 栈与堆

栈:是给方法调用使用的,栈的大小比较小(1-2M),栈会出现overflow,一般是因为算法没写好函数调用过多,或者是程序有错误。

堆:是用来存储对象的,堆的大小比较大(1-2G),堆不会出现overflow,但是如果分配完对象之后不回收,就会出现内存泄漏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StackAndHeap
{
    internal class Program
    {
        static void Main(string[] args)
        {
            BadGuy badGuy = new BadGuy();
            badGuy.BadMethod();
        }
    }

    class BadGuy
    {
        public void BadMethod() 
        {
            int x = 100;
            this.BadMethod();//只递不归,overflow
        }
    }
}
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值