C# 类型
C#类型
类型定义值的蓝图。有不同的操作与不同类型相关联。
在下面的示例中,我们使用两个类型为int
的常量,值为2
和 3
。
static void Main() {
int x = 2 * 3;
Console.WriteLine (x);
}
int
是一个表示整数值的构建类型。
C#也定义类型,如long,string,byte ...
变量
我们在上面的代码中声明了一个类型为 int
的变量,其名称为 x
。
变量表示可以包含不同值的内存位置。我们可以为变量赋予不同的值。
相反,常数总是表示相同的值:
const int y = 6;
相反,常数总是表示相同的值:
C#中的所有值都是类型的实例。
预定义类型示例
预定义类型是编译器支持的类型。
上面示例中的int
类型是用于表示整数集合的预定义类型,从-231到231-1。
我们可以执行函数,如与int类型的实例的算术如下:
int x = 2 * 3;
C#有其他类型。C#type string
表示一个序列字符,如“.NET"。
我们可以通过调用函数来处理字符串,如下所示:
string message = "Hello world";
string upperMessage = message.ToUpper();
Console.WriteLine (upperMessage);
上面的代码生成以下结果。
int x = 2;
message = message + x.ToString();
Console.WriteLine (message);
上面的代码生成以下结果。
值类型与引用类型
所有C#类型分为以下类别:
- 值类型
- 引用类型
- 通用类型参数
- 指针类型
值类型包括大多数内置类型,例如,int,long,bool以及自定义结构和枚举类型。
引用类型包括所有类,数组,委托和接口类型。它还包括预定义的 string
类型。
值类型
值类型变量或常量的内容是一个值。
我们可以使用 struct
关键字定义一个自定义值类型:
public struct Point {
public int X, Y;
}
值类型实例的分配始终会复制实例。
例如:
static void Main() {
Point p1 = new Point();
p1.X = 1;
Point p2 = p1; // Assignment causes copy
Console.WriteLine (p1.X); // 1
Console.WriteLine (p2.X); // 1
p1.X = 2; // Change p1.X
Console.WriteLine (p1.X); // 2
Console.WriteLine (p2.X); // 1
}
引用类型
引用类型有两部分:一个对象和对该对象的引用。
引用类型变量的内容是对包含该值的对象的引用。
这里是作为类重写的Point类型:
public class Point {
public int X, Y;
}
分配引用类型变量会复制引用,而不是对象实例。
这允许多个变量引用同一个对象。
static void Main() {
Point p1 = new Point();
p1.X = 1;
Point p2 = p1; // Copies p1 reference
Console.WriteLine (p1.X); // 1
Console.WriteLine (p2.X); // 1
p1.X = 2; // Change p1.X
Console.WriteLine (p1.X); // 2
Console.WriteLine (p2.X); // 2
}
空值
一个引用可以分配常量null,表示引用指向没有对象:
class Point {...}
Point p = null;
Console.WriteLine (p == null); // True
值类型通常不能为null值:
预定义类型分类法
C#中的预定义类型有:
- 值类型
- 数字
- 有符号整数 (sbyte, short, int, long)
- 无符号整数 (byte, ushort, uint, ulong)
- 实数 (float, double, decimal)
- 逻辑 (bool)
- 字符 (char)
- 引用类型
- String (string)
- Object (object)
C#别名中的预定义类型System
命名空间中的框架类型。
这两个语句之间只有语法上的区别:
int i = 5;
System.Int32 i = 5;
更多建议: