探索 C# 的内置类型
介绍
在本指南中,我们将探索 C# 编程语言中的内置数据类型。截至撰写本文时,共有 15 种不同的内置类型。我们将把它们分成几组,并逐一进行探索。
读完本指南后,您将了解:
C# 中的内置数据类型有哪些
每种数据类型的作用和样子
根据场景何时使用每种数据类型
内置数据类型
我将这些数据类型分为下表所示的五个不同类别。
整数
有多种不同的数据类型用于表示数字。每种数据类型的允许范围都不同,因此在决定使用哪种数据类型时,您应该根据具体情况进行相应的规划。
int是有符号的 32 位整数,允许范围为 -2,147,483,648 到 2,147,483,647。由于其存储容量和合理的允许范围,int 是迄今为止最常用的整数类型。它没有长整数那么大,但在内存中更易于维护。它在内存中的维护性不如字节或短整数,但它允许在其中容纳更多数字。
uint与 int 相同,但这是它的无符号版本。这仅意味着允许的范围不包括负数,因此其范围是 0 到 4,294,967,295,数字数量相同,但在刻度上的位置不同。除此以外,它具有与 int 相同的特征。
字节和小字节都是 8 位整数。小字节(称为有符号字节,表示允许负数)的允许范围是 -128 到 127,字节的允许范围是 0 到 255。由于范围较小,除非您知道数字将保持在此范围内,否则通常不会使用字节和小字节。
短整型和无符号短整型都是 16 位整数。短整型的允许范围是 -32,768 到 32,767,无符号短整型的允许范围是 0 到 65,535。虽然这个范围比字节大得多,但短整型也不像 int 那样常用。
最后,还有long和ulong。顾名思义,这些关键字是为非常长的数字保留的;它们是 64 位整数。 long 的允许范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,而 unsigned long 的允许范围是 0 到 18,446,744,073,709,551,615。由于这些范围非常大,它们需要分配相当多的内存来存储。因此,虽然范围对于任何程序员来说都非常方便,但 long 和 ulong 数据类型也不像 int 那样常用。
浮点数
浮点数有三种不同的类型。每种类型的范围、性能和精度都不同。
首先我们来看看float,它的范围最小,性能最好,精度为 7 位,是三者中最差的。当您需要非常快速的结果但并不真正关心舍入误差时,最好使用 float 。
double的允许范围比 float 大得多,性能良好(但不如 float),精度为 15-16 位,是 float 的两倍多。它是最常用的浮点类型;以至于默认情况下,C# 对所有浮点型数字都使用 double 数据类型。double 数据类型非常适合任何类型的浮点算术,因此它很受欢迎。唯一不应该使用 double 的情况是处理金钱和金融交易。
这就引出了十进制。此数据类型能够 100% 准确地表达其允许范围内的任何浮点数,这是浮点数和双精度数无法做到的。这就是十进制类型在金融交易中被广泛使用的原因。处理大量资金和重要金融交易时,这种精度是必需的。由于这种高精度,十进制类型的性能比浮点数或双精度数慢。十进制数据类型的范围非常大,性能较慢,但精度极高。
下面是按范围和精度细分每种浮点类型的图像。
对象
内置对象类型只是 .NET 框架对象的别名,所有其他类都从该对象派生而来。对象类型能够采用任何其他类型的形式,并通过装箱和拆箱过程变为所述类型。(有关装箱和拆箱操作的更多信息,您可以查看我的另一本指南《识别装箱和拆箱操作的发生时间》,但我们将避免在本指南中深入讨论该问题。)
让我们看一个对象采用本指南中讨论的多种其他内置类型形式的例子。这是使用对象类型的一个主要优点,我们将在下面的代码块中看到这一点。使用对象类型的一个缺点是它会减慢程序的运行时间。因此,如果您知道变量的类型,则应该使用其他类型。但这里有一个对象类型灵活性的例子。请务必阅读注释以逐行查看发生了什么。
object obj = "hello";
//declare object variable as a string
Console.WriteLine("Current value of obj: " + obj);
obj = 22;
//change it to an integer
Console.WriteLine("Current value of obj: " + obj);
obj = 'i';
//change it to a char
Console.WriteLine("Current value of obj: " + obj);
obj = "hello there";
//change it back to a string
Console.WriteLine("Current value of obj: " + obj);
下面的截图显示了这四个语句的结果。所有行都编译成功,没有任何问题。
字符
两种 char 数据类型是char和string。char 是单个 Unicode 文字字符,但它也可以表示十六进制转义序列、Unicode 表示形式,甚至可以表示以前用整数表示的类型转换整数代码。在 C# 中,可以使用单引号 (' ') 括住 char 来表示 char 。string 是字符数组。它是一系列串在一起的字符,通常用于组成单词、句子等。需要注意的是,字符串是不可变的,这意味着一旦创建了字符串,就无法更改。(有关字符串和不变性的更多信息,请查看我的《理解 C# 中的字符串不变性》指南。)
通过展示字符和字符串可以最好地解释它们,就像在这个代码块中一样,您可以看到所讨论的每种字符类型的代码示例以及字符串。
char ch = 'x'; //Unicode literal character
char hexChar = '\xF'; //hexadecimal number
char unicodeChar = '\u0058'; //Unicode character
char space = (char)32; //type casted from an integer
string str = "hello world"; //example of a string
逻辑
有一种数据类型适合逻辑类型,那就是bool关键字。此关键字用于表示两个不同的布尔值,true和false。这仅仅意味着这个变量的值是 true 或 false。声明 bool 变量时,如果不为其赋值,则该值将默认为false。下面我们将看到 bool 关键字的实际示例。我们从 0 到 10 进行循环迭代,并使用 % (mod) 运算符检查每个数字是否可以被 2 整除。
bool value = false; //declare a boolean with initial value of false
for (int i = 0; i < 11; i++)
{
if (i % 2 == 0)
{
value = true;
}
else
{
value = false;
}
Console.WriteLine(i + " % 2 = " + value);
}
如果将此代码复制并粘贴到终端,则相应的输出如下:
结论
内置数据类型是 C# 编程语言的基础。每组类型对于学习编程都非常重要。我们介绍了每一种数据类型,查看了示例,并了解了它们的局限性。正是它们的局限性导致了如此多不同的选择。
如果你参加工作面试,你会看到很多与这些数据类型相关的问题。特别是,要准备好回答以下问题:
- 字符串类和几个字符串操作程序,例如反转字符串和查明字符串是否为回文。
- 对象类及其封装、多态性和继承的用途。
- 布尔逻辑。
我希望您喜欢阅读本指南,并希望它能帮助您理解计算机科学领域最重要的概念之一!如果您喜欢本指南,请查看我的其他指南。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~