天天看點

上位機程式設計--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程式設計轉上位機程式設計的朋友,可以一起學習,一起加油!