C#编程语言,从本质上讲是一组类型声明。所以,本人认为第一个要区分的点是:类型!=类。

当然,如果想要系统的学习C#还是应该先了解一下.Net框架,本文目的只是从相对宏观的角度讲清楚C#中的类。关于类的实现的具体细节网络上到处都有。本文适合初学C#的新手。

如果你学习过数据结构,就应该知道数据类型仅仅是对数据的定义。在C#中类型分为预定义类型和自定义类型,而类属于6种自定义类型中一个,所以可以称类为类类型,英文名为class。

其实,从以下几个方面描述类应该是比较清晰的:

本文中,我们不必管具体地类怎么定义,怎么继承,怎么调用,怎么回收。

我们需要了解类是什么,类的作用是什么,类怎么分类,类与类之间的关系是什么,类在整个程序集中的地位是什么

一,类是什么?

类是C#中一种预定义的类型,一种类型就会包含数据成员与函数成员,对于类,其数据成员是“字段与常量”,其函数成员是“方法,属性,索引,事件,构造函数,析构函数,运算符”。对于其中的任何一个成员,都可以讲解一个篇章,相信大部分C#参考书上都有,这里不做赘述。

二.类在整个程序集中的地位

每一个程序集都有命名空间namespace,如果还不太理解程序集的概念,可以先认为是某一个.cs文件就是一个程序集。在命名空间中是不可以直接定义预定义类型的,要从类或者其他自定义类型开始编程。为什么要有命名空间?因为它保证了不同程序集同时被调用的时候,即使有相同的命名存在,也可以兼容。

类如要被访问,或者访问程序集中其他类,则涉及到类的访问级别问题。类具有public与internal两个访问级别。public级别的类可以被外部程序集访问,internal级别的类只能被所在程序集引用,这也是默认的访问级别。

三.类怎么分类与类与类之间的关系

对于C#中的类,只有两种,要么是object类,要么是派生类。所有的派生类都继承自object类,不同的是有的派生类是直接继承object类,有的派生类是间接继承object类。这里不必知道到底怎么实现继承,但是应该知道的是类可以继承该类所在程序集中其他类,也可以继承其他程序集中的访问级别为public的类。

当然,也可以分为实例类和静态类,如果对C#有一些了解的话应该知道实例与静态的含义。

C#中的类的更多相关文章

  1. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  2. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

  3. Objective-C中的类目,延展,协议

    Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词 ...

  4. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  5. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

  6. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  7. JAVA中的类和接口

    1.类: 类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属 ...

  8. java中Color类的简单总结

    java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 publi ...

  9. 《CoffeeScript应用开发》学习:第五章 CoffeeScript中的类

    在CoffeeScript中定义类 在CoffeeScript中,使用class定义类,使用关键字new实例化对象. 给类绑定方法 class Airplane takeOff: -> cons ...

  10. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

随机推荐

  1. TLS协议扫盲(握手,非对称加密,证书,电子签名等)

    想学习TLS协议最好的方法应该是去看RFC,但如果对安全传输协议没有一些基本认识的人很难一上来就读懂RFC里面的种种细节和设计原则,所以这里为了能够进一步去弄懂TLS协议,把一些基本的知识放在这里,算 ...

  2. leetcode205

    public class Solution { public bool IsIsomorphic(string s, string t) { if (s.Length != t.Length) { r ...

  3. Mysql 性能分析 Explain

    Mysql Query Optmize: 查询优化器, SQL语句会给Query Optimize他会执行他认为最优的方式.. Mysql 常见问题 CPU饱和,IO磁盘发生在装入数据大于内存时. E ...

  4. ManagedProperty not injected in @FacesConverter

    I'm trying to inject a ManagedBean in my FacesConverted the following way: @ManagedBean @RequestScop ...

  5. UnityEngine.SerializeField & System.Serializable

    [UnityEngine.SerializeField] Force Unity to serialize a private field. 强制Unity序列化一个私有变量. You will al ...

  6. SpringBoot进行单元测试

    SpringBoot进行单元测试,需要在maven中加入以下依赖 <dependency> <groupId>org.springframework.boot</grou ...

  7. 基于webpack的Vue.js开发环境快速搭建

    1. 安装node node下载地址 2. 安装淘宝 NPM npm 是node.js 的包管理工具. 镜像命令地址 #命令行: npm install -g cnpm 3. 安装vue # 全局安装 ...

  8. vnc安装

    安装命令:yum install tigervnc-server 一.启动VNC服务 输入命令 vncserver ps -ef|grep Xvnc vncserver -geometry 800x6 ...

  9. 基于python的Appium自动化测试的坑

    真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试. 一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习.后来学s ...

  10. 二叉树垂直遍历 · Binary Tree Vertical Order Traversal

    [抄题]: 给定二叉树,返回其节点值的垂直遍历顺序. (即逐列从上到下).如果两个节点在同一行和同一列中,则顺序应 从左到右. 给定一个二叉树 {3,9,20,#,#,15,7} 3 /\ / \ 9 ...