在C# 3.0中提供了隐式类型var。隐式类型并不是一种真正意义上的数据类型,只是在声明变量或对象时,提供的一种”简写“语法。比如var i = 5;这时变量i的数据类型由等号后面的值决定,编译器很聪明,会根据等号后面的表达式的值推出变量的类型。var i = 5; Console.WriteLine($"i={i} , type={i.GetType()}"); var j
dynamic是C#4中引入的一种特殊类型,它可以让C#在编译时不检查对象调用了哪些操作。这表示可以绕过编译器的类型检查,并在运行时解析这些操作。dynamic类似于object类型,甚至在用法上部分相同。例如下面的代码object o = 99; dynamic d = 99; Console.WriteLine($"o的type:{o.GetType()}"); Consol
C#语言内置了3个引用类型,分别是string、object、dynamic。引用类型的变量又称为对象,可存储对实际数据的引用。实际数据是指存储在内存中某一段物理或逻辑上连续的空间上的数据,这段内存有一个首地址,而变量(或对象)保存了这个首地址(或指向首地址)。哪些关键字可以声明引用类型?classinterface委托string、object就是由class声明的引用类型。本节课我们将隆重介绍
string关键字表示一个字符串(零个或更多 Unicode 字符),它对应.NET的System.String。请注意,我们在前面的章节中所学习的bool、byte、short、int、long、float、double、decimal等基础数据类型都是值类型,因为它们都是以struct关键字声明和定义的,而string则是由class关键字声明和定义的,所以,string并不是一个值类型,而是
从技术上说,decimal表示一个浮点数值类型,它对应.NET基元类型中的System.Decimal,但是,C#语言规范中并没有将其定义为浮点类型。由于它在内存中占16个字节,所以它是一个128位的数据类型,可以存储介于-79228162514264337593543950335到-79228162514264337593543950335之间的有符号浮点数值,在数字后面带有m或M后缀用来表示d
double表示一个浮点数值类型,它对应.NET基元类型中的System.Double。通常我们把double称为双精度浮点数据。可以存储介于-1.7976931348623157E+308到1.7976931348623157E+308之间的有符号浮点数值。在内存中占8个字节,即64位。每个浮点类型的默认值都为零。在数字后面带有d或D后缀用来表示double类型。例如:double v1 = 5
float表示一个浮点数值类型,它对应.NET基元类型中的System.Single。通常我们把float称为单精度浮点数据。可以存储介于-3.40282347E+38f到3.40282347E+38f之间的有符号浮点数值。在内存中占4个字节,即32位。每个浮点类型的默认值都为零。在数字后面带有f或F后缀用来表示float类型。例如:float v1 = 56.789f;float v2 = 99
ulong关键字表示一个长整型数据,它的范围是0到18,446,744,073,709,551,615之间的无符号整数值整数值。long关键字是System.UInt64的别名。观察下面的例子namespace HelloWorld { internal class Program { static void Main(string[] ar
long关键字表示一个长整型数据,它的范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807之间的有符号整数值。long关键字是System.Int64的别名。应用示例namespace HelloWorld { internal class Program { static void
uint表示无符号32位整数。它对应了.NET中的System.UInt32。它能表示的数值范围是0 到 4,294,967,295。由于uint 类型与 CLS 不兼容,所以尽可能使用 int。声明和初始化声明一个uint类型的变量,可以按如下的写法。可以在整数后面添加u 或 U后缀。uint max = 4294967290; uint min = 0u; uint v = 123
int表示32位有符号整数,它对应.NET中的System.Int32基元类型。由于它表示32位的内存空间,也就是说,它能存储2的32次方个数据,所以,它的范围是-2,147,483,648 到 +2,147,483,647 之间的有符号整数。声明和初始化int a = 0;观察下面的例子using System; using System.Collections.Generic; u
ushort表示无符号的整型数据类型,它的范围是0到65535,在内存中占2个字节,所以它是一个16位的无符号整数,对应了.NET中的System.UInt16。声明和初始化ushort myShort = 65535;在以上声明中,整数 65535 从 int 隐式转换为 ushort。 如果整数超出了 ushort 的范围,将产生编译错误。internal class Program {
在C#中,short是一个关键字,用于声明一个变量,该变量可以存储介于-32,768到32,767之间的有符号整数值。short关键字是System.Int16的别名。它在内存中占用2个字节(16位)的空间。声明和初始化short variable_name = value;观察下面的例子internal class Program { static void Main(str
C#中的char类型对应.NET中的System.Char,它表示 Unicode UTF-16 字符。要了解char,我们必须先了解什么是Unicode UTF-16 。先说说ASCII码,自第一台计算机诞生于美国后,人们将英语大小写字母、数字、常用符号与二进制位之间的关系做了统一规定,并制定了一套字符编码规则,这套编码规则被称为ASCII编码。ASCII 编码一共定义了128个字符的
bool类型的值只有两种,分别是true和false。它对应.NET中的System.Boolean。在这个值类型的内部,其实定义了两个int类型的值分别表示true和false,另外,还定义了它的字符串形式。internal const int True = 1; internal const int False = 0; [__DynamicallyInvoka
sbyte表示一种整型数据,它的范围是-128到+127,它是一个有符号的8位整数,在.NET中与之对应的是System.Sbyte。C#中的byte类型的范围是0-255。它们两者都只能表示256个数值,只不过,一个有符号,一个没有符号。为什么有符号的sbyte的范围是-128到+127呢?首先8位的二进制数据的范围本来应该是00000000-11111111,然后我们分两种情况来讨论。第一种情
byte是我们学习的第一个数据类型,表示一个8位无符号整数,也表示一个字节。在计算机中,一个字节的长度是8位(bit)。byte类型的范围是0~255,转换为二进制是00000000~11111111。C#中byte对应的.NET数据类型是System.Byte。声明和初始化我们可以使用.NET提供的关键字声明一个Byte变量,也可以使用C#关键字声明一个byte变量,两者在内存上的长度和特性是一
在前面的章节中,我们学习了数据类型、进程、线程等概念,也熟悉了不同数据类型,本质上是指不同长度的内存空间。由于我们向计算机申请一段内存,它只会返回这个内存的地址,而这个地址是二进制形式(实际是以16进制显示),只有计算机能秒懂,人类是看不懂的。针对32位CPU,用16进制表示线性地址,其取值范围为0x00000000~0xffffffff。64位CPU,其取值范围为0x00000000000000
想必大家在使用计算机时都知道可以同时打开多个软件,比如Word、Visual Studio、QQ音乐。通常在办公的时候或者程序员在编程的时候,一边开发软件,一边听着歌曲。其实,这是操作系统为这三款不同的程序开辟了彼此独立的内存,以保证它们的良好运行。每一个程序都代表一个进程(Process)。进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程(Thread),一个进
一、内存分配了解内存分配是计算机编程的基础。内存提供了存储数据和程序高效运行所需的所有命令的空间,程序本质上就是数据+指令,两者都需要分配内存空间。就好比菜板和菜刀是指令,蔬菜是数据,厨房就是计算机的内存,我们要进行“切菜”这个程序,厨具和蔬菜肯定都在厨房里面占用一定的空间才行。要是厨房里面连厨具都没有,那还切什么菜呢,只能是歇菜了。计算机的内存可以分为以下几个部分:全局段(Global segm
C#语言在.NET基元类型的基础上,也编制了一份数据类型。所以,将来我们在开发C#程序时,声明基础数据类型,其实就有两种写法。它们的对应如下表所示。.NET数据类型C#数据类型说明范围System.SBytesbyte8 位有符号整数类型-128 到 127System.Bytebyte8 位无符号整数0 到 255System.Int16short16 位有符号整数类型-32,768 到 32,
一、.NET源代码编译过程由于Microsoft 在 .NET 平台上提供 3 种语言 – C#、F# 和 Visual Basic,所以, .NET被设计成本质上并不知道所运行的程序代码到底是哪种语言,因为.NET只认识IL语言。IL语言即 Intermediate Language (微软中间语言)。为了说清楚整个事件的来龙去脉,我们以C#源代码为例。首先,程序员利用Vis
一、基本概念首先,数据类型应该拆开来理解,分别是数据和类型。我们先讲什么是数据,本质上是计算机内存中的0和1,由于计算机存储的基本单位是字节(byte),最小单位是位(bit),一个节字等于8位,这些都是计算机客观存在的概念。所以,byte在计算机占8个位,bit在计算机中占1个位,由于这两个家伙所占的存储空间长度不一样,所以我们才分别命名为byte和bit,其实,这里的byte和bit就是计算机
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号