一、值数据类型(Value Data Types)
值数据类型将直接将变量值存储在内存中,它还将接受有符号和无符号文字。 这些数据类型的派生类是 System.ValueType。
有符号和无符号整数类型(Signed & Unsigned Integral Types)
Alias | Type Name | Type | Size(bits) | Range | Default Value |
---|---|---|---|---|---|
sbyte | System.Sbyte | signed integer | 8 | -128 to 127 | 0 |
short | System.Int16 | signed integer | 16 | -32768 to 32767 | 0 |
Int | System.Int32 | signed integer | 32 | -2^31 to 231-1 | 0 |
long | System.Int64 | signed integer | 64 | -2^63 to 2^63-1 | 0L |
byte | System.byte | unsigned integer | 8 | 0 to 255 | 0 |
ushort | System.UInt16 | unsigned integer | 16 | 0 to 65535 | 0 |
uint | System.UInt32 | unsigned integer | 32 | 0 to 2^32 | 0 |
ulong | System.UInt64 | unsigned integer | 64 | 0 to 2^63 | 0 |
浮点类型
- Float:为 32 位单精度浮点型。 它具有 7 位精度。 要初始化浮点变量,请使用后缀 f 或 F。例如,float x = 3.5F;。 如果后缀 F 或 f 不会使用,则将其视为双精度。
- Double:64位双精度浮点型。 它具有 14 – 15 位精度。 要初始化双精度变量,请使用后缀 d 或 D。但不必使用后缀,因为默认情况下浮点数据类型是双精度类型。
Alias | Type name | Size(bits) | Range | Default Value |
---|---|---|---|---|
float | System.Single | 32 | ±1.5 × 10-45 to ±3.4 × 1038 | 0.0F |
double | System.Double | 64 | ±5.0 × 10^-324 to ±1.7 × 10^308 | 0.0D |
Decimal
Decimal是一种 128 位数据类型,适用于金融和货币计算。 它具有 28-29 位精度。 要初始化Decimal变量,请使用后缀 m 或 M。例如,十进制 x = 300.5m;。 如果后缀 m 或 M 不使用,则将其视为双精度。
字符类型
字符类型表示 UTF-16 代码单元或表示 16 位 Unicode 字符。
Boolean
bool 类型的值不会隐式或显式(使用强制转换)转换为任何其他类型。
二、引用数据类型(Reference Data Types)
引用数据类型将包含变量值的内存地址,因为引用类型不会将变量值直接存储在内存中。 内置的引用类型是字符串、对象。
-
String :它表示一个 Unicode 字符序列,它的类型名称是 System.String。 所以,字符串和字符串是等价的。
-
Object :在 C# 中,所有类型(预定义的和用户定义的、引用类型和值类型)都直接或间接继承自 Object。 所以基本上它是 C# 中所有数据类型的基类。 在赋值之前,需要进行类型转换。 将值类型的变量转换为对象时,称为装箱。 当对象类型的变量转换为值类型时,称为拆箱。 它的类型名称是 System.Object。
三、指针(Pointer Data Type)
指针数据类型将包含变量值的内存地址。
为了获得指针的详细信息,我们有两个符号和号 (&) 和星号 ()。
与号 (&):它被称为地址运算符。 它用于确定变量的地址。
星号 ():也称为间接运算符。 它用于访问地址的值。
using System;
namespace Pointerprogram {
class GFG {
// Main function
static void Main()
{
unsafe
{
// declare variable
int n = 10;
// store variable n address
// location in pointer variable p
int* p = &n;
Console.WriteLine("Value :{0}", n);
Console.WriteLine("Address :{0}", (int)p);
}
}
}
}