C# 基础篇 - 数据类型

C# 数据类型

  在 C# 中,变量分为以下几种类型:

  • 值类型(Value types)
  • 引用类型(Reference types)
  • 指针类型(Pointer types)

 

值类型(Value types)

  从类 System.ValueType 中派生。可以直接分配给一个值。

  值类型直接包含数据。比如 int、char、float,它们分别存储数字、字母、浮点数。声明一个具体类型时,系统自动分配内存来存储。

  C# 中可用的值类型:

类型 描述 范围 默认值
bool 布尔值 True 或 False False
byte 8 位无符号整数 0 到 255 0
char 16 位 Unicode 字符 U +0000 到 U +ffff ''
decimal 128 位精确的十进制值,28-29 有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D
float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F
int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符号整数类型 -923,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符号整数类型 -128 到 127 0
short 16 位有符号整数类型 -32,768 到 32,767 0
uint 32 位无符号整数类型 0 到 4,294,967,295 0
ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0
ushort 16 位无符号整数类型 0 到 65,535 0

 使用 sizeof 方法,可以得到一个类型或一个变量在特定平台上的准确尺寸。

表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。

【示例】:获取 int 类型的存储尺寸:

 1 namespace TypeApplication
 2 {
 3    class TypeProgram
 4    {
 5       static void Main(string[] args)
 6       {
 7          Console.WriteLine("Size Of Int: {0}", sizeof(int));
 8          Console.ReadLine();
 9       }
10    }
11 }

输出结果:

  Size Of Int: 4

 

引用类型(Reference types)

引用类型是对变量的引用,而非存储在变量中的实际数据。实际上是一个内存位置。

使用多个引用类型变量时,可以指向一个内存位置。如果内存位置的数据通过其中一个变量修改,其他变量会自动反映值的变化。

引用类型有:object、dynamic 和 string。

 

对象类型(Object)

对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类,是 System.Object 类的别名。

对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。在分配值之前,需要先进行类型转换。

一个值类型转换为对象类型时,被称为装箱;一个对象类型转换为值类型时,被称为拆箱

1 object obj;
2 // 装箱
3 obj = 20; 

 

动态类型(Dynamic)

动态数据类型变量可以存储任何类型的值。程序在运行时才检查变量的类型。

声明动态类型的语法:

dynamic <variable_name> = value;

【示例】:

1 // 声明动态类型数据
2 ynamic d = 20;

注意区别于对象类型。对象类型变量的类型检查是在编译时发生,动态类型变量的类型检查是在运行时发生。

 

字符串类型(String)

字符串类型变量可存储任何字符串值,是 System.String 类的别名,从对象(Object)类型派生。

字符串类型的值可以通过两种形式分配:

1、引号

1 String str = "My C# Class";

2、@引号

1 @"My C# Class";

C#中字符串前面加 @ 将转义字符 “\” 当作普通字符。以下示例中,两个字符串相同

1 String str1 = @"C:\Windows\System";
2 String str2 = "C:\\Windows\\System";

@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

1 string str = @"<script type="text/javascript">
2     <!--语言-->
3     <program name="C#"/>
4 </script>";

用户自定义引用类型有:class、interface 或 delegate。后续补充。

指针类型(Pointer types)

指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。

声明指针类型的语法:

type* identifier;
【示例】
1 int* cptr;
2 char* iptr;

posted @ 2018-11-17 17:47  乐7  阅读(106)  评论(0)    收藏  举报