毕业生的商业软件开发之路 --- C#基本语法-C#代码模块逻辑框架
C#基本语法
课程介绍
面向读者说明C#编程语言的基本语法,本章要求阅读者已经掌握了一种计算机高级编程语言,比如VB或C++等,理解变量、数组、条件判断、循环等编程知识。达到了国家计算机等级考试二级的水平。
本章是面向C#初学者的,因此只介绍C#的基础语法,不介绍C#的高级语法。
C#的代码模块逻辑框架。
C#代码模块逻辑上分为命名空间、类型、成员。
以下就是一个完整的C#源代码内容,
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("显示一个消息"); } } } |
这段代码为例说明一下C#的代码模块组织结构。[袁永福版权所有]
命名空间
命名空间就是C#最大的语法结构模块,这个模块是按照名称来标识的。每个类型都有所属的命名空间。同一个命名空间的类型不能重名,但不同的命名空间可以拥有相同名称的类型。
在C#中使用以下语法结构来使用命名空间。
namespace 命名空间名称 { 若干个类型 } |
在本例中,使用代码“namespace WindowsFormsApplication1”定义了一个名为“WindowsFormsApplication1”的命名空间,其中定义了名为“Form1”的类型。
对于很多编程语言,比如C语言,它没有命名空间的概念,几千个函数排列在一起,对于VB也是几百个类混在一起,这些都会导致开发人员记忆和调用非常不方便。
而使用命名空间,就能将诸多类型层次化,利于模块化,而且方便调用。
命名空间也可以分层次,比如以下代码。
namespace 命名空间名称 { 若干个类型 } namespace 命名空间名称.子命名空间 { 若干个类型 } |
这段代码就定义了一个命名空间和子命名空间,这个层数是没有限制的。
在C#功能代码中,要引用某个类型必须是它的类型全名,也就是“命名空间.类型名称”,此时代码显得比较臃肿,而且若未来类型的命名空间发生改变,则需要修改不少代码。此时C#使用using关键字来引用命名空间。
例如在演示代码的开头有[袁永福版权所有]一行代码“using System.Windows.Forms;”,此时就在代码中引用了命名空间“System.Windows.Forms”,而窗体类型“Form”就在这个命名空间下面,则可以在代码中直接使用“Form”来获得窗体的类型,若没有这个using代码,则必须使用“System.Windows.Forms.Form”来获得窗体类型,这就使得代码显得有些臃肿。从这里看,using关键字的作用有点类似VB中的with关键字。
注意using关键字除了能引用命名空间外,还能形成自动销毁对象的语法结构。
类型
命名空间下面就是定义类型了,包括类类型、结构体类型、委托类型。命名空间下面不能直接跟上字段、函数等。因此C#没有游离于类型之外的函数。
理论上是可以跳出命名空间而直接编写类型,这样也能编译通过,但在实践中不推荐这么做。
在演示代码中,使用了以下的代码定义了一个类型。
public partial class Form1 : Form { } |
在这里,public关键字说明该类型是公开的,可以被任何程序调用。
partial关键字说明这段代码不是这个类型的全部代码,C#工程中还有其他的代码文件包含了这个类型的代码,在编译程序的时候,编辑器[袁永福版权所有]会收集这些分散的源代码收集起来组成一份完整的源代码参与编译。
class关键字说明这是在定义一个类类型。
Form1是新类型的名称。
Form是跟在Form1后面,中间有一个引号,这个说明新增的类型Form1是集成自已有的类型Form。若前面没有代码“using System.Windows.Forms.Form”引用命名空间,则该行代码必须写成“public partial class Form1 : System.Windows.Forms.Form”。
Form后面跟着一对花括号就定义了它的类型成员定义区域。
成员
类型下面就是定义类型的成员了,包括字段、属性、方法和事件。
在演示代码中,使用以下代码定义了一个名为Form1的成员方法。
public Form1() { InitializeComponent(); } |
该方法名称和类型名称一样,而且没有定义返回值,因此该方法就是该类型的构造函数。
以下代码定义了一个成员方法。
private void button1_Click(object sender, EventArgs e) { MessageBox.Show("显示一个消息"); } |
在这段代码中,private关键字说明该方法是私有的,只能在本类型内部使用,类型之外就不能使用。
void关键字说明该方法没有任何返回值。
button1_Click是该方法的名称。
“object sender”定义了该方法的第一个参数,object是参数类型,sender是参数名;类似的“EventArgs e” 定义了第二个参数,两个参数之间用逗号分开。
函数声明后面就是函[袁永福版权所有]数体了。在这里使用了一行代码“MessageBox.Show("显示一个消息");”,这行代码调用了类型MessageBox的Show方法,参数是字符串“"显示一个消息"”。这行代码就是调用类型System.Windows.Forms.MessageBox的Show静态方法来显示一个文本消息框。
注意在写C#代码时,记得要根据需要写上分号“;”。
毕业生的商业软件开发之路 --- C#基本语法-C#代码模块逻辑框架相关推荐
- [毕业生的商业软件开发之路]系列文章目录规划
目前[毕业生的商业软件开发之路]系列文章规划出的目录如下,希望靠大家一起完善它,有什么意见欢迎跟帖. 第一章 课程背景 高校毕业生就业问题 高校毕业生就业方式 第二章初入职场 课程说明 关于企业培训 ...
- [毕业生的商业软件开发之路]C#语法基础结构
近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...
- 【毕业生的商业软件开发之路】商业软件开发基础
近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...
- [毕业生的商业软件开发之路]尽早暴露错误原则
近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...
- [毕业生的商业软件开发之路]C#类型样式
近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...
- 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释]
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释] 引言:同样是求职,和前面一篇blog一样,看出了很大的差距,多花了些时间,把作者列举的书籍通 ...
- 从零开始的 React 组件开发之路 (一):表格篇
React 下的表格狂想曲 0. 前言 欢迎大家阅读「从零开始的 React 组件开发之路」系列第一篇,表格篇.本系列的特色是从 需求分析.API 设计和代码设计 三个递进的过程中,由简到繁地开发一个 ...
- 基于CkEditor实现.net在线开发之路(1)
我以前的公司使用office sharepoint designer为界面设计器,嵌套各种自定义控件,进行各种管理软件,工作流的开发,遇到比较复杂的逻辑,则采用本地写类库,生成DLL上传到服务器,通过 ...
- 小强的HTML5移动开发之路(18)——HTML5地理定位
来自:http://blog.csdn.net/dawanganban/article/details/18192091 在前面的<小强的HTML5移动开发之路(2)--HTML5的新特性> ...
最新文章
- python修改nginx配置文件_zookeeper 动态管理nginx配置
- linux c 信号量简介
- haproxy Consistent Hash浅析
- Tomcat部署的三种方式
- android的提示页面,android 页面加载中,友情提示界面-Fun言
- intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 有用
- oracle jdk_两个Oracle JDK的故事
- 前端学习(1660):前端系列实战课程之时间对象介绍
- mysql操作常用技巧
- 高等数学一使用python实现极限后有代码
- 单通道GNSS模拟器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)
- 人人商城源码怎么安装MySQL_人人商城12个常见错误解决方案
- MP3 Lame 转换 参数 设置(转)
- pdf合并成一个pdf软件下载?pdf合并成一个pdf软件合成器工具
- Unity中表格制作与动态生成
- 如何用VBA寻找指定区域中的第一个非空单元格
- [内存泄漏]pppd程序导致的内存泄漏
- linux内核的原子操作简述
- CGI 学习笔记 HelloCGI