C#是纯粹的面向对象编程语言,它真正体现了“一切皆为对象”的精神。在C#中,即使是最基本的数据类型,如int,double,bool类型,都属于System.Object类型。此外,使用C#编程,不会存在与游离于对象之外的属于过程的东西。

这个世界是由什么组成的?这个问题如果让不同的人来回答会得到不同的答案。如果是一个化学家,他也许会告诉你“还用问嘛?这个世界是由分子、原子、离子等等的化学物质组成的”。如果是一个画家呢?他也许会告诉你,“这个世界是由不同的颜色所组成的”。……呵呵,众说纷纭吧!但如果让一个分类学家来考虑问题就有趣的多了,他会告诉你“这个世界是由不同类型的物与事所构成的”。好!作为面向对象的程序员来说,我们要站在分类学家的角度去考虑问题!是的,这个世界是由动物、植物等组成的。动物又分为单 细胞动物、多细胞动物、哺乳动物等等,哺乳动物又分为人、大象、老虎……就这样的分下去了!

那么什么是“面向对象思想”?其精要当然是“一切皆为对象”的意义。软件的开发与设计,是围绕着开发的目标进行的。比如开发一个电子商务网站,那么与电子商务有关的都是我们要操作和关心的,商品、订单、用户、目录、购物车等等,都是对象。如果要开发一个论坛,那么论坛中必备的要素,如论坛分类、主题、帖子、评论、用户,也全都是对象。从小处说,我们要求写一个算法用以计算阶乘,那么起始值、运算结果、以及整个算法都是对象。

那么对象具有什么特质?一般而言,一个对象应具有属性和行为。以现实世界为例,“人”作为一种特殊的动物,也是我们所称谓的“对象”。这个对象具有很多属性,例如姓名,身高、体重、民族、国籍、出生年月等等。而行为呢,可以是行走、吃饭、跑步、乃至于玩游戏、踢足球。如果从词义学的角度来看,属性更偏向于名词的范畴,而行为则近乎于动词。然而对象也有特殊的情况,或者只具有属性,或者只具有行为。例如身份证,可能只具有姓名,出生年月,籍贯,身份证号等属性,而没有行为。例如“飞”,这本身是一种动作,但同样可以认为是一种行为。

然而这种划分并非绝对,根据实际情况,同一种对象具有的属性和行为可能不一样。例如同样是“人”,如果是要开发一个户籍管理系统,我们就不必去考虑行走、吃饭、跑步等行为,但如果是一个足球游戏,那么对象“人”,就需要各种踢足球的动作作为该对象的行为了。再比如“身份证”对象,也可能为了使用方便,会为它添加“IsValidate”这样一个行为。

还要注意的是,很多时候属性其实本身也是一个对象,例如姓名,可以是string类型,它属于Sytem.Object对象类型,我们也可以单独为姓名建立一个类对象:
public class Name
{
public string FirstName;
public string MiddleName;
public string LastName;
}

在C#里,有各种各样的对象类型,除了本身提供的基本类型外,还支持自定义各种类型,包括class,struct,enum,interface,delegate,event。以前面的例子来看,对象Person“人”,就可以被定义为class类型,国籍可以被定义为enum类型。没有行为的身份证,也可以被定义为struct类型。动作“飞”可以被定义为interface类型。至于delegate和event,则是一种特殊对象类型,例如我们可以为论坛管理系统,定义一系列事件,如BeforePost,AfterPost等等。

C#是面向对象编程语言相关推荐

  1. 面向对象编程语言中的接口(Interface)

    在大多面向对象的编程语言中都提供了Interface(接口)的概念.如果你事先学过这个概念,那么在谈到"接口测试"时,会不会想起这个概念来!?本篇文章简单介绍一下面向对象编程语言中 ...

  2. c不是面向对象编程语言 所以不具有面对,go 学习笔记之go是不是面向对象语言是否支持面对对象编程?...

    面向对象编程风格深受广大开发者喜欢,尤其是以 C++, Java 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 C 语言,却不同于 C 的面向过程编程,这种面向对 ...

  3. JAVA————一门强大的面向对象编程语言

    JAVA----一门强大的面向对象编程语言 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征 ...

  4. 什么是面向对象编程和面向对象编程语言

    面向对象编程是一种编程范式或编程风格.它以类或对象作为组织代码的基本单元,并将封装.抽象.继承.多态四个特性,作为代码设计和实现的基石 . 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制 ...

  5. JAVA(计算机编程语言)---面向对象---静态面向对象编程语言的代表---分布式---多线程

    JAVA(计算机编程语言) Java是一门面向对象编程语言,吸收了C++语言的各种优点,摒弃了C++里难以理解的多继承.指针等概念,Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向 ...

  6. Go是一门面向对象编程语言吗

    Go语言已经开源13年了[1],在近期TIOBE[2]发布的2023年3月份的编程语言排行榜中,Go再次冲入前十,相较于Go在2022年底的排名[3]提升了2个位次: <Go语言第一课>专 ...

  7. 【历史上的今天】8 月 27 日:第一个面向对象编程语言创造者诞生;IE 衰亡起点;IBM研制世界最小计算机逻辑电路

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 8 月 27 日,互联网公司的两位巨擘 微软(Microsoft)和 IBM 曾巧合地在 20 年前 ...

  8. Python logo面向对象编程语言 Python

    Python (发音:[ 'paiθ(ə)n; (US) 'paiθɔn ]n.蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史 ...

  9. Python 3.8.0a2 发布,面向对象编程语言

    百度智能云 云生态狂欢季 热门云产品1折起>>>   Python 3.8.0a2 发布了,这是 3.8 系列计划中 4 个 alpha 版本的第 2 个. alpha 版本旨在更加 ...

最新文章

  1. 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点
  2. Scala 深入浅出实战经典 第96讲:Akka第一个案例动手实战main方法实现中ActorSystem等代码详解...
  3. R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format)、如果没有指定行标识符号,则所有的字段都会放入variable变量中
  4. 文本文件数据导入mysql注意事项
  5. Winform开发中另一种样式的OutLookBar工具条
  6. go语言扫描四位数可用域名
  7. HTML5的little,HTML 5
  8. 一起谈.NET技术,抛砖引玉:我看微软.NET各子技术领域之应用前景
  9. cmake命令的python库的位置参数-DTORCH_PATH
  10. android 测试获取context,Android单元测试获取context问题,用AndroidTestCase获取为空
  11. IDEA左侧project导航栏设置背景色
  12. w3c 菜鸟mysql_w3c菜鸟
  13. 计算长方体和四棱锥的表面积和体积(类的继承)python java
  14. 妙哉!那个用文言文编程的小哥,竟从28万行唐诗中找出了对称矩阵
  15. python三维建模和cad比较_对比Revit和CAD三维建模的不同
  16. 查看windows系统许可证过期日期方法
  17. 阿里云国际版如何使用NGINX作为HTTPS转发代理服务器
  18. matlab矩阵运算中“.”的使用
  19. rfc-3227中文翻译
  20. Python爬虫——去哪儿网评论

热门文章

  1. 使用Anaconda完全替代官方Python
  2. Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO
  3. 对比DFT程序与FFT程序的效率
  4. html dom节点源码,JavaScript操作HTML DOM节点的基础教程
  5. 用MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()
  6. 的写法_横、竖的写法
  7. kubectl 创建pvc_动态挂载云盘(PVC)
  8. Python学习系列day1-python基础
  9. rust(54)-字符串
  10. 【深度学习】使用Python+PyTorch预测野外火灾