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#代码模块逻辑框架相关推荐

  1. [毕业生的商业软件开发之路]系列文章目录规划

    目前[毕业生的商业软件开发之路]系列文章规划出的目录如下,希望靠大家一起完善它,有什么意见欢迎跟帖. 第一章 课程背景 高校毕业生就业问题 高校毕业生就业方式 第二章初入职场 课程说明 关于企业培训 ...

  2. [毕业生的商业软件开发之路]C#语法基础结构

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  3. 【毕业生的商业软件开发之路】商业软件开发基础

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  4. [毕业生的商业软件开发之路]尽早暴露错误原则

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  5. [毕业生的商业软件开发之路]C#类型样式

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  6. 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释]

    9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释] 引言:同样是求职,和前面一篇blog一样,看出了很大的差距,多花了些时间,把作者列举的书籍通 ...

  7. 从零开始的 React 组件开发之路 (一):表格篇

    React 下的表格狂想曲 0. 前言 欢迎大家阅读「从零开始的 React 组件开发之路」系列第一篇,表格篇.本系列的特色是从 需求分析.API 设计和代码设计 三个递进的过程中,由简到繁地开发一个 ...

  8. 基于CkEditor实现.net在线开发之路(1)

    我以前的公司使用office sharepoint designer为界面设计器,嵌套各种自定义控件,进行各种管理软件,工作流的开发,遇到比较复杂的逻辑,则采用本地写类库,生成DLL上传到服务器,通过 ...

  9. 小强的HTML5移动开发之路(18)——HTML5地理定位

    来自:http://blog.csdn.net/dawanganban/article/details/18192091 在前面的<小强的HTML5移动开发之路(2)--HTML5的新特性> ...

最新文章

  1. python修改nginx配置文件_zookeeper 动态管理nginx配置
  2. linux c 信号量简介
  3. haproxy Consistent Hash浅析
  4. Tomcat部署的三种方式
  5. android的提示页面,android 页面加载中,友情提示界面-Fun言
  6. intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 有用
  7. oracle jdk_两个Oracle JDK的故事
  8. 前端学习(1660):前端系列实战课程之时间对象介绍
  9. mysql操作常用技巧
  10. 高等数学一使用python实现极限后有代码
  11. 单通道GNSS模拟器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  12. SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)
  13. 人人商城源码怎么安装MySQL_人人商城12个常见错误解决方案
  14. MP3 Lame 转换 参数 设置(转)
  15. pdf合并成一个pdf软件下载?pdf合并成一个pdf软件合成器工具
  16. Unity中表格制作与动态生成
  17. 如何用VBA寻找指定区域中的第一个非空单元格
  18. [内存泄漏]pppd程序导致的内存泄漏
  19. linux内核的原子操作简述
  20. CGI 学习笔记 HelloCGI

热门文章

  1. 鸿蒙开发-在JS中获取hml页面中Input输入的值
  2. SpringBoot中通过重写WebMvcConfigurer的方法配置静态资源映射实现图片上传后返回网络Url
  3. c:forEach循环的List为String时的写法
  4. Vue怎样新建并启动项目(图文教程详解)
  5. 操作系统-银行家算法
  6. 神策数据潘书荟:解读千人千面,洞悉数据智能的价值
  7. spring boot中data truncation data too long for column问题
  8. tomcat占用cpu比较多
  9. linux下通过命令来下载视频
  10. react antd 动态表单