主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C#

C# 基础

C# 主页
C# 概述
C# 环境
C# 程序结构
C# 基本语法
C# 数据类型
C# 类型转换
C# 变量
C# 常量
C# 运算符
C# 决策结构
C# 循环结构
C# 封装
C# 方法
C# 可空类型
C# 数组
C# 字符串
C# 结构体
C# 枚举
C# 类
C# 继承
C# 多态性
C# 操作符重载
C# 接口
C# 命名空间
C# 预处理
C# 正则表达式
C# 异常
C# 文件与流

C# 高级

C# 属性(Attributes)
C# 反射
C# 属性(Properties)
C# 索引器
C# 委托
C# 事件
C# 集合
C# 泛型
C# 匿名方法
C# 不安全代码
C# 线程

基础

C# 主页
C# 概述
C# 环境
C# 程序结构
C# 基本语法
C# 数据类型
C# 类型转换
C# 变量
C# 常量
C# 运算符
C# 决策结构
C# 循环结构
C# 封装
C# 方法
C# 可空类型
C# 数组
C# 字符串
C# 结构体
C# 枚举
C# 类
C# 继承
C# 多态性
C# 操作符重载
C# 接口
C# 命名空间
C# 预处理
C# 正则表达式
C# 异常
C# 文件与流

高级

C# 属性(Attributes)
C# 反射
C# 属性(Properties)
C# 索引器
C# 委托
C# 事件
C# 集合
C# 泛型
C# 匿名方法
C# 不安全代码
C# 线程

C# 数据类型


上一章 下一章

变量类型

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

  1. 值类型
  2. 引用类型
  3. 指针类型

值类型

值类型的变量可以直接赋值。它们是从 System.ValueType 类派生而来。

值类型直接包含数据。例如 int、char 和 float 分别存储数字、字母和浮点数。当你声明一个 int 类型时,系统会分配内存来存储这个值。

以下表格列出了 C# 2010 中可用的值类型:

类型 代表 范围 默认值
bool 布尔值 True 或 False False
byte 8 位无符号整数 0 到 255 0
char 16 位 Unicode 字符 U+0000 到 U+FFFF '\0'
decimal 具有 28-29 位有效数字的 128 位精确十进制值 (-7.9 x 10^28 到 7.9 x 10^28) / 100 到 28 0.0M
double 64 位双精度浮点类型 (+/-)5.0 x 10^-324 到 (+/-)1.7 x 10^308 0.0D
float 32 位单精度浮点类型 -3.4 x 10^38 到 + 3.4 x 10^38 0.0F
int 32 位带符号整数类型 -2,147,483,648 到 2,147,483,647 0
long 64 位带符号整数类型 -9,223,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 类型的大小:

实时演示

using System;

namespace DataTypeApplication {
   class Program {
      static void Main(string[] args) {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

当以上代码被编译并执行时,它产生如下结果:

Size of int: 4

引用类型

引用类型并不包含变量中实际存储的数据,而是包含对变量的引用。

换句话说,它们指向一个内存位置。使用多个变量,引用类型可以指向同一个内存位置。如果其中一个变量改变了该内存位置的数据,那么其他变量也会自动反映出这个值的变化。内置引用类型的例子包括:object、dynamic 和 string。

对象类型

对象类型是 C# 公共类型系统 (CTS) 中所有数据类型的最终基类。对象是 System.Object 类的别名。对象类型可以被赋予任何其他类型的值,包括值类型、引用类型、预定义或用户定义的类型。但是,在赋值前,需要类型转换。

当一个值类型被转换成对象类型时,称为装箱;相反地,当一个对象类型被转换成值类型时,则称为拆箱。

object obj;
obj = 100; // 这是装箱

动态类型

你可以存储任何类型的值在动态数据类型的变量中。这类变量的类型检查发生在运行时。

声明动态类型的语法如下:

dynamic <variable_name> = value;

例如,

dynamic d = 20;

动态类型与对象类型类似,除了对象类型的变量在编译时进行类型检查,而动态类型的变量则在运行时进行类型检查。

字符串类型

字符串类型允许你给一个变量赋任何字符串值。字符串类型是 System.String 类的别名。它派生于对象类型。字符串类型的值可以通过两种形式的字符串文字来赋值:引号和 @ 引号。

例如,

String str = "Tutorials Point";

一个 @ 引号字符串文字如下所示:

@"Tutorials Point";

用户定义的引用类型包括:类、接口或委托。我们将在后面的章节中讨论这些类型。

指针类型

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

声明指针类型的语法如下:

type* identifier;

例如,

char* cptr;
int* iptr;

我们将在 'Unsafe Codes' 章节中讨论指针类型。

上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图