CShard入门004-了解类型

—-刘铁猛《C#语言入门详解》

类型


首先理解什么是内存,内存是指计算机存储数据的地方,在冯诺依曼架构叫做存储器。我们可以简单理解成就是内存条(动态)和硬盘(静态)。狭义的理解就是:软件运行的时候,主要靠的内存条来存储,处理信息。一般我们说电脑卡,实际上就是指电脑在一定时间内要处理的信息,超过了内存条能处理的数量,所以需要排队处理,是这样就会导致电脑看起来不动,但是电脑依旧是在处理操作中。

类型:又叫做数据类型

  • 数据在内存中存储时的“型号”;
  • 小内存容纳大尺寸数据会丢失精确度、发生错误;
  • 大内存容纳小尺寸数据会导致浪费;
  • 编程语言的数据类型于数据的数据类型不完全相同。

强类型语言、弱类型语言

强类型指的是声明的变量是什么类型,以后它就是什么类型,弱类型指声明的变量可以是多个类型

强类型(c#)

  • 强类型语言是指在编程时要求严格定义变量的数据类型,不允许不同类型之间的隐式转换。
  • 在强类型语言中,变量的数据类型必须在编译时就确定,并且不会发生自动类型转换。
  • 强类型语言通常具有更严格的类型检查,能够在编译时捕获一些潜在的类型错误。

弱类型(python,c)

  • 弱类型语言是指在编程时对变量的数据类型要求较为灵活,允许不同类型之间的隐式转换。
  • 在弱类型语言中,变量的数据类型通常可以在运行时动态确定,允许自动类型转换。
  • 弱类型语言通常具有更灵活的类型系统,但也可能导致一些难以发现的类型错误。
例如
//c#
if(x==2)//编译通过
if(x=2) //编译报错
//c
if(x==2)//编译通过
if(x=2) //编译通过
原因就是c#中规定if内必须是布尔值,而x=2是一个赋值过程,是一个int值,所以不能编译;
c不受数据的约束,0为假,非0为真,所以很多程序员写c的时候都会写成 if(2==x),这样能避免当出现if(2=x)时候编译器及时报错。
Tip:c#中用dynamic定义的变量可以让该变量在不同时刻赋任何类型的值。但不建议初学者使用。
与dynamic不同,var是根据赋值的类型自行推断。

类型的作用

一个c#类型中所包含的信息有

  • 存储此类型变量所需的内存空间大小。
  • 此类型的值可表示的最大、最小值范围。
  • 此类型所包含的成员(方法,属性、事件等)。
  • 此类型由哪个基类派生过来。
  • 程序运行时候,此类型的变量在内存的什么位置。
    • Stack简介:栈:方法调用
    • Stack overflow: 栈溢出:比如递归没有写终止条件。
    • Heap简介:堆:存储对象
    • 使用Performance Monitor查看进程的堆内存
    • 内存泄漏:c#自带gc回收。
  • 此类型所允许的操作。

类型系统

Q:请问c#中有哪些数据类型?
A:c#中主数据类型主要分为引用类型和值类型,其中引用类型包括类、接口、和委托,值类型包括结构体、枚举,它们都以Object为基类。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇