当前位置: 首页 > ds >正文

C# 类型

原文:C# 类型_w3cschool

C#类型

类型定义值的蓝图。有不同的操作与不同类型相关联。

在下面的示例中,我们使用两个类型为int的常量,值为 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 copyConsole.WriteLine (p1.X); // 1 Console.WriteLine (p2.X); // 1p1.X = 2; // Change p1.XConsole.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 referenceConsole.WriteLine (p1.X); // 1 Console.WriteLine (p2.X); // 1p1.X = 2; // Change p1.XConsole.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; 
http://www.xdnf.cn/news/17176.html

相关文章:

  • Git基础操作教程
  • Dbeaver数据库的安装和使用(保姆级别)
  • 计算机网络:理解路由的下一跳
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现路口车辆速度的追踪识别(C#代码UI界面版)
  • 【保姆级 - 大模型应用开发】DeepSeek + Faiss + langchain 搭建本地知识库 检索 | 代码实战
  • 行业报告:.games域名正引领游戏娱乐产业营销新风向
  • Ubuntu 下 MySQL 运维自动化部署教程(在线简易版)
  • 【测试】⾃动化测试常⽤函数
  • Linux命令top
  • Selenium教程(Python 网页自动化测试脚本)
  • 清洁机器人从“看到垃圾”到“预判污染”:技术如何演变?
  • Ubuntu24.04的VSCode中安装MoonBit和MoonBit Toolchain(moon-pilot)
  • 开源的现代数据探索和可视化平台:Apache Superset 从 PyPI 安装 Superset
  • Axure日期日历高保真动态交互原型
  • linux的用户操作(详细介绍)
  • Exporters | 安装elasticsearch_exporter
  • 力扣301:删除无效的括号
  • iostat 系统IO监控命令学习
  • AR技术赋能轨道交通培训:虚实结合提升学习效率
  • Kotlin Daemon 简介
  • 从零开始搞定类与对象(中)
  • AI 面试 vs 真人面试:破解企业招聘效率困局
  • 【STM32】GPIO的输入输出
  • 数据结构(2)
  • SpringBoot3.0+Vue3.0开源版考试系统
  • ubuntu22.04系统实践 linux基础入门命令(三) 用户管理命令
  • 抗辐照DCDC与MCU在核环境监测设备中的集成应用
  • Jwts用于创建和验证 ​​JSON Web Token(JWT)​​ 的开源库详解
  • 【MATLAB例程】水下AUV自主导航定位例程,定位使用TDOA(到达时间差),适用于三维环境,附代码下载链接
  • MySQL详解