天天看点

上位机编程--C#入门

作者:八方汇PLC编程赖老师

01

上位机编程--C#入门

一、C#书写规范

Pascal大小写(标识符中每个单词首字母大写):类、方法、命名空间、属性和公共字段

Camel大小写(标识符中每个单词首字母大写,第一个单词除外):局部变量、形参

下划线加Camel大小写:私有字段和受保护的字段

以大写的I开始:接口名称

我认为养成良好的编程习惯,按照规范来书写是很有必要的,所以把书写规范列在了第一条。

02

上位机编程--C#入门

二、类

对于所有的面向对象的语言,类都是很重要的主题。

程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类。

类是一个能储存数据并执行代码的数据结构。它包含数据成员和函数成员:

数据成员:字段、常量

函数成员:方法、属性、构造函数、析构函数、运算符、索引器、事件

关于类主要讲一下以下几个方面:

1、属性

刚接触C#的时候一直搞不清楚属性和字段有什么区别,觉得既然有了字段为何还要有属性。按我的理解,属性是一种方法,对字段进行了封装,以避免字段直接暴露给程序员使用。属性不具备存储能力,必须使用字段作为存储。通常做法是:

(1)将字段声明为private,将属性声明为public。

(2)采用相同的名称,不同的书写方法,如字段:_myValue,属性:MyValue。

之所以要有属性,是因为其具备计算能力和可设置为只读或只写。

假设我们需要一个不大于100的数值,为了避免客户输入数字的超出范围,我们需要过滤掉无效输入:

private int_theValue=10;

int TheValue

{

set{_theValue=value>100?100:value;}//如果输入值大于100,则将—theValue设为100.

get{return _theValue;}

}

只有get访问器的属性称为只读属性,只有set访问器的属性称为只写属性:

int MyValue//只读属性

{

get{...}

}

int MyValue//只写属性

{

set{...}

}

每个属性都要被关联到后备字段,每次去声明字段会显得很繁琐,C#提供了自动实现属性,允许只声明属性而不声明后备字段:

Class C1

{

public int MyValue{get;set;}

}

2、方法

方法就是函数,有形参和实参,至于具体结构形式这里就不展开讲了,这里只讲一点,那就是可选参数。

C#允许可选参数,所谓可选参数就是我们可以在调用方法的时候包含这个参数,也可以省略它。

这个可选参数有什么用呢?这里举个例子说明。

假设我们要设计一个串口设置串口参数的方法:SPSet()

串口参数有:串口号、波特率、数据位、停止位、校验位

以上有五个参数,如果每次调用都要输入五个参数会显得很繁琐,而我们一般常需要设置的参数串口号和波特率,所以可以将后三个参数设置为可选参数,如下:

void SPSet (string portName,int baudRate,int dataBits=8,int stopBits=1,string parity=“None”)

{...}

这样在调用SPSet()方法的时候,只需要传前两个参数就可以了,后面的参数可以省略。

3、访问修饰符

类和类的成员都有访问修饰符,在这里做一个总结:

类的可访问性有两个级别:public和internal。

标记为public的类可以被系统内任何程序集中的代码访问。

标记为internal的类只能被它自己所在的程序集内的类看到。

成员访问修饰符有:public、private、protected、internal、protected internal

private:只在类的内部可访问

internal:对该程序集类所有类可访问

protected:对所有继承该类的类可访问

protected internal:对所有继承该类的类或在该程序集内声明的类可访问

public:对任何类可访问

03

上位机编程--C#入门

三、委托

刚接触C#的时候对委托很陌生,记得第一次阅读本书,委托部分都是一带而过,没有深入理解。

但实际上很好理解,只要把书中开头的这句话记住就可以了:

可以认为委托是持有一个或多个方法的对象。

找出主谓宾:委托是一个对象。

我们可以执行委托,这时委托会执行它所“持有”的方法。

一开始我很好奇,为什么要有委托。直到我接触了WPF,才发现委托在GUI编程中是不可或缺的。

假设我们有个按钮点击事件,当我们点击按钮的时候会发生某个动作,但是作为设计框架的人员不知道这个动作将发生什么。于是设计人员将这个动作设计为一个委托,当有人按下按钮时就执行该委托,至于委托中的具体动作就由程序员去编写实现。

04

上位机编程--C#入门

四、接口

老规矩,不懂的概念就先把它背下来。

接口是指定一组函数成员而不实现它们的引用类型。

接口是引用类型。

每当我遇到不理解的地方心里就默念:委托是对象,接口是类型,这样很多代码就能够理解了。

05

上位机编程--C#入门

五、异步编程

以前我一直在想,程序只能从上往下运行,如果我需要实时监控一些数据并不断刷新显示在界面上,且不能影响程序正常运行该怎么办?

直到我看了异步编程这一章才恍然大悟,不得不感叹,你能想到的设计者早为你想好了。

1、BackgroundWorker类

该类可以另建一个线程,在后台持续运行以完成某项工作,并不时与主线程进行通信。

2、计时器

计时器提供了另外一种定期地重复运行异步方法的方式。

除了以上两种方法还有其他的方法,因为内容较多这里就不展现了。具体实现可以通过查询资料或者购买本书查阅。我觉得异步编程算是C#中较难的一个主题,但也是上位机编程中非常重要的部分。

最后我想说的是,关于C#入门书籍很多,基本所有的入门类书籍都会涵盖这些知识点,图解教程这本书配有很多图文讲解,更易于理解。

关于学习这件事,我一直觉得不能因为一遍看不懂就放弃。这本书我前前后后看了3遍,每一遍都有不同的收获。书读百遍,其义自见。这句话说的一点不假。

最后希望想从PLC编程转上位机编程的朋友,可以一起学习,一起加油!