原文: https://www.programiz.com/csharp-programming/variables-primitive-data-types
在本教程中,我们将学习变量,如何在 C# 中创建变量以及 C# 编程语言支持的不同数据类型。
变量是赋予存储位置的符号名称。 变量用于将数据存储在计算机程序中。
如何在 C# 中声明变量?
这是在 C# 中声明变量的示例。
int age;
在此示例中,声明了类型为int
(整数)的变量age
,并且它只能存储整数值。
我们可以稍后在程序中为变量分配一个值,如下所示:
int age;
... ... ...
age = 24;
但是,在声明过程中也可以将变量初始化为某个值。 例如,
int age = 24;
在此,声明类型为int
的变量age
并将其初始化为24
。
由于这是一个变量,因此我们也可以更改变量的值。 例如,
int age = 24;
age = 35;
这里,age
的值从 24 更改为 35。
必须先声明 C# 中的变量,然后才能使用它们。 这意味着,必须先知道变量的名称和类型,然后才能为其分配值。 这就是为什么 C# 被称为静态类型语言的原因。
声明后,就不能在范围内更改变量的数据类型。 范围可以看作是代码块,其中变量可见或可以使用。 如果您不理解前面的说明,请不要担心,我们将在后面的章节中了解范围。
现在请记住,我们无法在 C# 中执行以下操作:
int age;
age = 24;
... ... ...
float age;
隐式变量
另外,在 C# 中,我们可以使用var
关键字声明变量而无需知道其类型。 此类变量称为隐式类型局部变量。
使用var
关键字声明的变量必须在声明时进行初始化。
var value = 5;
编译器根据分配给变量的值来确定变量的类型。 在上面的示例中,value
的类型为int
。 这等效于:
int value;
value = 5;
您可以了解有关隐式类型局部变量的更多信息。
C# 中的变量命名规则
命名变量时,我们需要遵循某些规则。 在 C# 中命名变量的规则是:
变量名称只能包含字母(大写和小写),下划线(_)和数字。
The variable name must start with either letter, underscore or @ symbol. For example,
Rules for naming variables in C# | 变量名 | 备注 | | —- | —- | |name
| 有效 | |subject101
| 有效 | |_age
| 有效(命名私有成员变量的最佳实践) | |@break
| 有效(如果名称是保留关键字,则使用) | |101subject
| 无效(以数字开头) | |your_name
| 有效 | |your name
| 无效(包含空格) |
C# 区分大小写。 这意味着
age
和Age
涉及 2 个不同的变量。变量名称不能是 C# 关键字。 例如,
if
,for
,using
不能是变量名。 在下一个教程中,我们将讨论 C# 关键字的更多信息。
命名变量的最佳做法
- 选择一个有意义的变量名。 例如,
name
,age
,subject
比n
,a
和s
更有意义。 - 使用 camelCase 表示法(以小写字母开头)来命名局部变量。 例如,
numOfStudents
,age
等。 - 使用 PascalCase 或 CamelCase (以大写字母开头)来命名公共成员变量。 例如,
Name
,Price
等。 - 使用前导下划线(
_
)后跟 camelCase 表示法来命名私有成员变量。 例如,_bankBalance
,_emailAddress
等。
您可以在处了解有关 C# 中命名约定的更多信息。
不用担心公共和私有成员变量。 我们将在后面的章节中了解它们。
C# 基本数据类型
C# 中的变量大致分为两种类型:值类型和引用类型。 在本教程中,我们将讨论作为值类型的子类的原始(简单)数据类型。
引用类型将在以后的教程中介绍。 但是,如果您想了解更多有关变量类型的信息,请访问 C# 类型和变量(官方 C# 文档)。
bool
(布尔)
- 布尔数据类型具有两个可能的值:
true
或false
- 默认值:
false
- 布尔变量通常用于检查条件,例如,循环等中的条件。
例如:
using System;
namespace DataType
{
class BooleanExample
{
public static void Main(string[] args)
{
bool isValid = true;
Console.WriteLine(isValid);
}
}
}
当我们运行程序时,输出将是:
True
带符号整数
这些数据类型保存整数值(正数和负数)。 在所有可用位中,一位用于符号。
1.sbyte
- 大小:8 位
- 范围:-128 至 127。
- 默认值:0
例如:
using System;
namespace DataType
{
class SByteExample
{
public static void Main(string[] args)
{
sbyte level = 23;
Console.WriteLine(level);
}
}
}
当我们运行程序时,输出将是:
23
尝试分配超出范围的值,即小于 -128 或大于 127,然后看看会发生什么。
2.short
- 大小:16 位
- 范围:-32,768 至 32,767
- 默认值:0
例如:
using System;
namespace DataType
{
class ShortExample
{
public static void Main(string[] args)
{
short value = -1109;
Console.WriteLine(value);
}
}
}
当我们运行程序时,输出将是:
-1109
3. int
- 大小:32 位
- 范围:-231 至 231-1
- 默认值:0
例如:
using System;
namespace DataType
{
class IntExample
{
public static void Main(string[] args)
{
int score = 51092;
Console.WriteLine(score);
}
}
}
当我们运行程序时,输出将是:
51092
4.long
- 大小:64 位
- 范围:-263 至 263-1
- 默认值:
0L
【末尾的L
表示该值是long
型】
例如:
using System;
namespace DataType
{
class LongExample
{
public static void Main(string[] args)
{
long range = -7091821871L;
Console.WriteLine(range);
}
}
}
当我们运行程序时,输出将是:
-7091821871
无符号整数
这些数据类型仅保留等于或大于 0 的值。当我们确定不会有负值时,通常使用这些数据类型来存储值。
1.byte
- 大小:8 位
- 范围:0 到 255。
- 默认值:0
例如:
using System;
namespace DataType
{
class ByteExample
{
public static void Main(string[] args)
{
byte age = 62;
Console.WriteLine(level);
}
}
}
当我们运行程序时,输出将是:
62
2. ushort
- 大小:16 位
- 范围:0 到 65,535
- 默认值:0
例如:
using System;
namespace DataType
{
class UShortExample
{
public static void Main(string[] args)
{
ushort value = 42019;
Console.WriteLine(value);
}
}
}
当我们运行程序时,输出将是:
42019
3. uint
- 大小:32 位
- 范围:0 到 232-1
- 默认值:0
例如:
using System;
namespace DataType
{
class UIntExample
{
public static void Main(string[] args)
{
uint totalScore = 1151092;
Console.WriteLine(totalScore);
}
}
}
当我们运行程序时,输出将是:
1151092
4. ulong
- 大小:64 位
- 范围:0 到 264-1
- 默认值:0
例如:
using System;
namespace DataType
{
class ULongExample
{
public static void Main(string[] args)
{
ulong range = 17091821871L;
Console.WriteLine(range);
}
}
}
当我们运行程序时,输出将是:
17091821871
浮点
这些数据类型保存浮点值,即包含十进制值的数字。 例如 12.36,-92.17 等。
1.float
- 单精度浮点型
- 大小:32 位
- 范围:
1.5×10^−45
至3.4×10^38
- 默认值:
0.0F
【F
表示值是浮点型】
例如:
using System;
namespace DataType
{
class FloatExample
{
public static void Main(string[] args)
{
float number = 43.27F;
Console.WriteLine(number);
}
}
}
当我们运行程序时,输出将是:
43.27
2.double
- 双精度浮点类型。 单精度和双精度浮点有什么区别?
- 大小:64 位
- 范围:
5.0×10^−324
至1.7×10^308
- 默认值:
0.0D
【D
表示值是双精度型】
例如:
using System;
namespace DataType
{
class DoubleExample
{
public static void Main(string[] args)
{
double value = -11092.53D;
Console.WriteLine(value);
}
}
}
当我们运行程序时,输出将是:
-11092.53
char
(字符)
- 它代表一个 16 位 unicode 字符。
- 大小:16 位
- 默认值:
"\0"
- 范围:U+0000(
'\u0000'
)至 U+FFFF('\uffff'
)
例如:
using System;
namespace DataType
{
class CharExample
{
public static void Main(string[] args)
{
char ch1 ='\u0042';
char ch2 = 'x';
Console.WriteLine(ch1);
Console.WriteLine(ch2);
}
}
}
当我们运行程序时,输出将是:
B
x
'B'
的 unicode 值为'\u0042'
,因此打印ch1
将打印'B'
。
decimal
- 与浮点类型(双精度和浮点型)相比,十进制类型具有更高的精度和更小的范围。 因此,它适合进行货币计算。
- 大小:128 位
- 默认值:
0.0M
【M
表示十进制类型的值】 - 范围:(
-7.9x10^28
至7.9x10^28
)/(100 至 28)
例如:
using System;
namespace DataType
{
class DecimalExample
{
public static void Main(string[] args)
{
decimal bankBalance = 53005.25M;
Console.WriteLine(bankBalance);
}
}
}
当我们运行程序时,输出将是:
53005.25
必须在末尾添加后缀M
或m
,否则该值将被视为双精度值,并会产生错误。
C# 字面值
让我们看下面的语句:
int number = 41;
这里,
int
是一种数据类型number
是变量,41
是字面值
字面值是程序中显示的固定值。 他们不需要任何计算。 例如,5
,false
,'w'
是直接出现在程序中的字面值,无需任何计算。
布尔字面值
true
和false
是可用的布尔字面值。- 它们用于初始化布尔变量。
例如:
bool isValid = true;
bool isPresent = false;
整数字面值
整数字面值用于初始化整数数据类型的变量,即
sbyte
,short
,int
,long
,byte
,ushort
,uint
和ulong
。如果整数字面值以
L
或l
结尾,则其类型为long
。 为了获得最佳实践,请使用L
(而非l
)。long value1 = 4200910L; long value2 = -10928190L;
- 如果整数字面值以
0x
开头,则它表示十六进制值。 没有前缀的数字将被视为十进制值。 在 C# 中不允许使用八进制和二进制表示形式。int decimalValue = 25; int hexValue = 0x11c;// decimal value 284
浮点字面值
浮点字面值用于初始化
float
和double
数据类型的变量。如果浮点字面值以后缀
f
或F
结尾,则其类型为float
。 同样,如果以d
或D
结尾,则其类型为double
。 如果两个后缀都不存在,则默认类型为double
。这些字面值以科学计数法表示时包含
e
或E
。double number = 24.67;// double by default float value = -12.29F; double scientificNotation = 6.21e2;// equivalent to 6.21 x 102 i.e. 621
字符和字符串字面值
字符字面值用于初始化
char
数据类型的变量。字符字面值用单引号引起来。 例如
'x'
,'p'
等。它们可以表示为字符,十六进制转义序列,unicode 表示或强制转换为
char
的整数值。char ch1 = 'R';// character char ch2 = '\x0072';// hexadecimal char ch3 = '\u0059';// unicode char ch4 = (char)107;// casted from integer
字符串字面值是字符字面值的集合。
它们用双引号引起来。 例如,
"Hello"
,"Easy Programming"
等。string firstName = "Richard"; string lastName = " Feynman";
- C# also supports escape sequence characters such as:
| 字符 | 含义 |
| —- | —- |
|
\'
| 单引号 | |\"
| 双引号 | |\\
| 反斜杠 | |\n
| 新队 | |\r
| 回车 | |\t
| 水平制表符 | |\a
| 警报 | |\b
| 退格键 |