C# 类型

2018-01-16 00:08 更新

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; 
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号