C# 中的比较运算符和内置类型
介绍
运算符是每种编程语言的一部分,C# 也不例外。当涉及到应用程序内部的业务逻辑时,有两种主要类型需要考虑。一种是内置的,另一种是自定义的。在本指南中,我们将介绍内置类型以及 C# 提供的运算符类型。之后,我们将深入研究比较运算符。
内置类型
内置类型分为五种不同的类别。
- 整数(int、uint、long 等)
- 浮点数(十进制、双精度、浮点)
- 对象(对象)
- 字符(字符串,字符)
- 逻辑(布尔)
这些可以扩展到进一步的子类别,但最重要的是要记住,它们的分辨率和在内存中分配的用于存储它们的空间量是不同的。我想向您展示一个巧妙的技巧,演示如何在内存中分配特定实例的大小。
using System;
namespace Pluralsight
{
public class BuiltInSize
{
public static void Main()
{
Console.WriteLine($"int has size of {sizeof(int)} bytes");
Console.WriteLine($"double has size of {sizeof(double)} bytes");
Console.WriteLine($"decimal has size of {sizeof(decimal)} bytes");
Console.WriteLine($"char has size of {sizeof(char)} bytes");
Console.WriteLine($"bool has size of {sizeof(bool)} bytes");
Console.ReadKey();
}
}
}
输出应如下所示。
int has size of 4 bytes
double has size of 8 bytes
decimal has size of 16 bytes
char has size of 2 bytes
bool has size of 1 bytes
开发任何应用程序时,您应始终使用允许大小最接近数据可能大小的类型。这样可以减少内存占用,并让应用程序性能更好且易于排除故障。
对象类型只不过是 .NET 框架对象内置类型的别名。它的特殊之处在于每个新对象都继承自它,并且可以进一步扩展继承的功能。
内置类型对于可存储的信息类型存在一些限制。
- 该类型需要在内存中分配的存储空间
- 最大和最小值(字符串和自定义对象除外)
- 任何成员声明
- 我们的类型继承自的基类型
- 运行时分配变量内存的位置(堆栈或堆)
- 允许的操作
C# 是用常识编写的,因此一段时间后,对特定类型的允许操作应该会自然而然地出现。例如,用浮点数除以字符串或用字符串乘以布尔变量的真值是没有意义的。
运算符
运算符基本上是特殊符号,它们接受一个或两个操作数并根据给定类型的允许操作执行特定操作。内置类型上的这些运算符主要有六种类别。
- 算术
- 关系型
- 逻辑
- 按位
- 任务
- 条件
某些运算符可以重载。重载的目的是赋予它们处理用户定义类型的能力。
当你有一个表达式时,运算符优先级和结合性将决定运算的顺序及其执行方式。最有趣的是括号,它可以覆盖默认行为。
比较运算符属于关系运算符类别,所有整数和浮点数字类型都支持它。
小于运算符 <
如果左侧操作数小于右侧操作数,则该运算符将返回 true,否则返回 false。
我们来看一个小的演示。
Console.WriteLine($"5 < 7 : {5 < 7}");
Console.WriteLine($"3.0 < 11.99 : {3.0 < 11.0}");
Console.WriteLine($"a < b {'a' < 'b'}");
输出应如下所示。
5 < 7 : True
3.0 < 11.99 : True
a < b True
以下比较将导致编译时错误。
Console.WriteLine("asting" < 'b');
Console.WriteLine(true < false);
原因在于该运算符不支持字符串和布尔操作数。
大于运算符 >
如果左侧操作数大于右侧操作数,则该运算符返回 true,否则返回 false。
Console.WriteLine($"5 > 7 : {5 > 7}");
Console.WriteLine($"3.0 > 11.99 : {3.0 > 11.0}");
Console.WriteLine($"a > b {'a' > 'b'}");
输出应如下所示。
5 > 7 : False
3.0 > 11.99 : False
a > b False
小于或等于运算符 <=
如果左侧操作数小于或等于右侧操作数,则运算符将返回 true,否则返回 false。
Console.WriteLine($"5 <= 7 : {5 <= 7}");
Console.WriteLine($"3.0 <= 11.99 : {3.0 <= 11.0}");
Console.WriteLine($"a <= b {'a' <= 'b'}");
输出应如下所示。
5 <= 7 : True
3.0 <= 11.99 : True
a <= b True
大于或等于运算符 >=
如果左侧操作数大于或等于右侧操作数,则该运算符返回 true,否则返回 false。
Console.WriteLine($"5 >= 7 : {5 >= 7}");
Console.WriteLine($"3.0 >= 11.99 : {3.0 >= 11.0}");
Console.WriteLine($"a >= b {'a' >= 'b'}");
输出应如下所示。
5 >= 7 : False
3.0 >= 11.99 : False
a >= b False
等于运算符 ==
如果左侧操作数等于右侧操作数,则该运算符返回 true,否则返回 false。
Console.WriteLine($"5 == 7 : {5 == 7}");
Console.WriteLine($"3.0 == 3.00 : {3.0 == 3.00}");
Console.WriteLine($"c == c {'c' == 'c'}");
输出应如下所示。
5 == 7 : False
3.0 == 3.00 : True
c == c True
不等于运算符 ==
如果左侧操作数不等于右侧操作数,则该运算符返回 true,否则返回 true。
Console.WriteLine($"5 != 7 : {5 != 7}");
Console.WriteLine($"3.0 != 3.00 : {3.0 != 3.00}");
Console.WriteLine($"c != c {'c' != 'c'}");
输出应如下所示。
5 != 7 : True
3.0 != 3.00 : False
c != c False
结论
在本指南中,您了解了什么是运算符以及最重要的内置类型是什么。我们采用了关系运算符,并在三种基本数据类型上演示了它们的所有功能。我希望这对您有所帮助,并感谢您阅读它!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~