C# 类型体系

原创 2006年06月25日 22:10:00

C# 2005 类型体系包含下列几种类别:

·         值类型

·         引用类型

·         指针类型

值类型的变量存储数据,而引用类型的变量存储对实际数据的引用。引用类型也称为对象。指针类型仅可用于 unsafe 模式。

通过装箱和取消装箱,可以将值类型转换为引用类型,然后再转换回值类型。除了装箱值类型外,无法将引用类型转换为值类型。

本节还介绍 void 类型。

值类型也可以为空,这意味着它们能存储加法非值状态。有关更多信息,请参见可空类型

修饰符用于修改类型和类型成员的声明。本节介绍 C# 2005 修饰符:

修饰符

用途

访问修饰符

·         public

·         private

·         internal

·         protected

指定声明的类型和类型成员的可访问性。

abstract

指示某个类只能是其他类的基类。

const

指定无法修改字段或局部变量的值。

event

声明事件。

extern

指示在外部实现方法。

·         new

从基类成员隐藏继承的成员。

override

提供从基类继承的虚拟成员的新实现。

partial

在整个同一程序集中定义分部类和结构。

readonly

声明一个字段,该字段只能赋值为该声明的一部分或者在同一个类的构造函数中。

sealed

指定类不能被继承。

static

声明属于类型本身而不是属于特定对象的成员。

unsafe

声明不安全的上下文。

virtual

在派生类中声明其实现可由重写成员更改的方法或访问器。

volatile

指示字段可由操作系统、硬件或并发执行线程等在程序中进行修改。

方法参数如果在为方法声明参数时未使用 refout,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。

本节描述声明方法参数时可以使用的关键字:

·         params

·         ref

·         out

 

命名空间关键字本节描述与 using 命名空间关联的关键字和运算符:

·         命名空间

·         using

·         . 运算符

·         :: 运算符

·         外部别名

运算符关键字用于执行杂项操作,例如创建对象,检查对象的运行时类型,获取类型的大小,等等。本节介绍下列关键字:

·         as   将对象转换为可兼容类型。

·         is   检查对象的运行时类型。

·         new

o        new 运算符   创建对象。

o        new 修饰符   隐藏继承成员。

o        new 约束   限定类型参数。

·         sizeof   获取类型的大小。

·         typeof   获取类型的 System.Type 对象。

·         true   

o        true 运算符   返回布尔值 true 表示真,否则返回 false。

o        true   表示布尔值 true。

·         false   

o        false 运算符   返回布尔值 true 表示假,否则返回 false。

o        false   表示布尔值 false。

·         stackalloc   在堆栈上分配内存块。

语句一节中介绍了下列可用作运算符和语句的关键字:

·         checked   指定已检查的上下文。

·         unchecked   指定未检查的上下文。

转换关键字本节描述在类型转换中使用的关键字:

·         explicit

·         implicit

·         operator

本节介绍下列访问关键字

·         base

访问基类的成员。

·         this

引用类的当前实例。

C# 2005 有下列文字关键字

·         null

·         true

·         false

·         default

上下文关键字用于提供代码中的特定含义,但它不是 C# 2005 中的保留字。本节介绍下面这些上下文关键字:

get   为属性或索引器定义访问器方法。

partial 在整个同一编译单元内定义分部类、结构和接口。

set   为属性或索引器定义访问器方法。

where 向泛型声明中添加约束。

yield 在迭代器块中使用,用于向枚举数对象返回值或发信号结束迭代。

value 用于设置访问器和添加或移除事件处理程序。

PMO是什么

PMO即Project Management Office(项目管理办公室),是随着IT产业的潮流应运而生的产物,最初的目的是节约成本,提高项目成功率,以及实施标准流程,以应对越来越多的项目管理任务。...
  • wangyong0921
  • wangyong0921
  • 2012年09月13日 22:21
  • 2813

集合框架示意图

如何选择? 1、容器类和Array的区别、择取 * 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。 * 一旦将对象置入容器内,便损失了该对象的型别信息。 2、 *...
  • qq_27918787
  • qq_27918787
  • 2016年09月19日 11:05
  • 920

深入理解Scala中的类型系统

核心内容: 1、Scala中定义类型的两种方式 2、Scala中的路径依赖 3、Scala中的自身类型以及自身类型的限定 4、Scala中的依赖注入 5、Scala中的链式风格调用—-Typ...
  • a2011480169
  • a2011480169
  • 2016年10月28日 21:49
  • 9166

Swift 的类型体系

Brent Simmons 在 解决目前不存在的问题,就好像问题存在一样 中说到:Swift 的类型体系解决了我没碰到的一个问题。 对这句话我深有同感,而且我敢打赌很多其他的 Objective-C ...
  • mmoaay
  • mmoaay
  • 2015年09月23日 10:08
  • 1431

三层构架与反射工厂的笔记

以前做过很多个网站系统,大都是用asp或者php做的,.net也用过,不过是用asp的思路来做.net,基本体现不出vs面向对象的特征。    最近也要做一个网站,决心用c#,用严格的三层构架+反射工...
  • zhdd1234
  • zhdd1234
  • 2010年05月01日 18:04
  • 312

使用Swagger2构建强大的RESTful API文档

本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合...
  • cxhtgm
  • cxhtgm
  • 2017年11月27日 13:08
  • 307

C#中的dynamic类型

dynamic是FrameWork4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性。比如,即使你...
  • colin788
  • colin788
  • 2015年01月30日 10:19
  • 581

C#中的运行时类型与编译时类型

今天在看C#参考时明白了 什么是C#的运行时类型与编译时类型,记录下来,以备查阅:相信很多刚学C#的人都对这两个概念感到迷惑,其时并不难(以前太重于技术可用性,比如:asp.net中的DataDrid...
  • alpsboy
  • alpsboy
  • 2006年09月05日 18:08
  • 2752

C#指针类型

操作c#中的指针,是一种编写非托管中的一种技术。c#中指针类型可能是(存储在栈)中的值类型,也可能是(存储在堆)中的引用类型。不过无论是什么类型,基本格式都有一个共同的要求就是必须都是支持非托管的类型...
  • C_Link
  • C_Link
  • 2011年02月27日 22:39
  • 570

各种坐标体系之间如何转换?

摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本文详细解答以上问题。最后给出坐标拾取工具。 ------------------------...
  • pananing
  • pananing
  • 2015年05月05日 10:51
  • 1258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 类型体系
举报原因:
原因补充:

(最多只允许输入30个字)