辛巴學院-Unity-劍英陪你零基礎學c#系列(一)Hello World

瘋光無線發表於2015-09-11

這不是草稿

辛巴學院:正大光明的不務正業。
辛巴學院:攻城獅與榮耀石。

劍英陪你係列又來啦。劍英是一個有大愛的人,熱愛每一個程式設計師,尤其是年輕漂亮的女程式。
最近組織朋友們玩了一次即興團體詩創作,無論怎麼開頭,都會走上廁所文化的道路。
尤其是衛生紙的出鏡率極高。
這讓我對這個群體的心理健康有了深深的擔憂,任重而道遠啊。
讓我們一起響應暴走九月不擼,不擼不擼,九月我不擼。

從Helloworld開始

你可能已經看過了無數的Helloworld,是什麼感覺呢?
興奮,失望,滿足?
還是已經想不起來什麼感覺了?
我已經想不起來了,我是一隻好了傷疤忘了痛的動物,我入門的那個時間過去很久了,我已經忘記了那時的很多細節。
於是我決定從頭來做這個系列,和你一起,再從頭,收拾舊山河。也重拾那一份一無所知的心態。

如果你在閱讀過程中發現很多不明白的名詞,沒關係,不影響理解。
強迫症患者請自行百度。
發現味同嚼蠟,請不要客氣,你罵過來我會罵回去,但我會修改。

什麼是C#

C#?什麼鬼名字?what the fuck?
這得往前一點說起。那時候除了微軟,還有一個強大的開發工具商borland。
他倆掐的死去活來,結果微軟挖走了delphi他爹安德斯·海爾斯伯格。
當然borland的衰落也不僅僅是因為痛失此位大神,反正他在borland當時也沒事做。
微軟倒是挖到了寶,當時微軟主要的開發工具是Visual 系列,主力產品visual c++,visual basic,visual foxpro。
至於現在大家熟知的 visual studio,就是 visual系列的打包促銷。
彼時業界產生了一個震動全球的破壞性的產品,java。是的,java就是這麼NB。
於是安德斯來微軟第一件事就是抄個java,然後就有了visual j++。
後果可想而知,官司打輸了,j++不能賣。
然後蓋子和安德斯在一起憋啊,想啊,這不行,這是潮流,還得抄,但是得避開和java的相似性。
於是就搞出了dotnet。把語言和位元組碼拆成相互獨立的部分。
至於那個語言,由於有j++的歷史,又有c++的特點。於是有個說法,最終叫做 c++++,四個+湊成了一個#。
而c#的發音 是 c sharp,中文翻譯"犀利c"。
這下你知道了,C#就是犀利C。

C#與我有什麼關係

注意,這是一段解釋Unity和C#之間關係的文字,看不懂沒關係
記住Unity和C#有很大的關係就行了

言歸正傳,由於Unity採用了Mono作為指令碼引擎,而Mono是Dotnet的一個開源實現。dotnet最主要的語言是c#,所以使用Unity時,的最主要的開發語言是C#。

是不是根本無法繞清楚,是的,我也繞不明白。

JAVA語言,JAVA位元組碼,JAVA執行時,JAVA基本類庫,都叫java。

而微軟和c#這邊有點混亂

C#語言,MSIL位元組碼,dotnet執行時,dotnet framework。有三種名字。

為什麼不弄成和java一樣呢?j++一樣,太像了違法。

dotnet,有時候也直接用個點 ".net",是c#的執行時,dotnet framework 是 c# 的基本類庫。
Msil 就是位元組碼,存位元組碼的檔案 叫 pe file,就是.dll 檔案.exe 檔案,這個你肯定熟悉。
但是微軟分開了語言和位元組碼執行時類庫,也帶來了一個優點。可以建立多種可以混用類庫的語言。

後來微軟將c#、msil、dotnet 標準都提交給了國際標準化組織,也就是他作為一個國際標準,誰都可以遵守。
有一個很愛c# ,很愛dotnet的人想要一個liunx可以用的dotnet,微軟自己當然守著windows了,標準化以後,這個人搞了mono。
他們還成立一家很屌的公司,叫做xamarin。

遵守和dotnet一樣的標準,但是實現為可以跨平臺執行,這就是mono。

unity跨平臺的關鍵技術,就是這個mono,現在雖然unity自己搞了il2cpp,這個你自己體會吧。

慢慢消化,這個像近親雜交一樣的關係確實不是那麼容易理順的。

要做一個Unity程式攻城獅,C#是你需要學習的。

C#怎麼學

注意,這一段是解釋為什麼你要學unity,我卻讓你安裝一個和unity一毛錢關係都沒有的軟體。
人生有時就是這麼無奈,學這些東西對你直接用Unity擺東西的願望沒任何幫助。
基礎就是這樣的東西,看起來好像沒有什麼卵用。

首先c#是微軟的親兒子。微軟有c#的整合開發環境,叫visual c#。

現在你要找到獨立的visual c# 下載還不容易,因為他們打包促銷了,建議你下載一份vs2013,並安裝好他。社群版不要錢,旗艦版的序列號也遍地都是。

Visual studio 長這樣

如果安裝不上vs,請你重灌windows

這點很重要,連個軟體都裝不上,那隻能擼自己了。

什麼,你用macbook,那關我什麼事情?我們就是要用windows 和 visualstudio來做說明,自己想辦法解決。

然後我們建立第一個c# 控制檯專案,來編寫我們的第一個helloworld。

請注意,模板裡面選擇 Visual C#,專案型別選擇控制檯應用程式。

為什麼要從控制檯應用程式開始呢?控制檯又是什麼

控制檯在windows上表示的是以命令列輸入輸出的方式互動的程式。這個說法太官方,一張圖你就懂

嗯,如果你經歷過dos年代,這個問題就不用糾結了。

我們從控制檯程式開始,因為他最單純,控制檯程式只有一種輸入,一種輸出。一個入口函式,函式執行完就退出。

用一個簡潔的測試環境,我們會看的更清楚

開始搖滾吧

新建好的專案是這樣的,在開始說程式碼之前,讓我們先來認識一下VisualStudio的樣子。

VS用的是一種流行的介面形式,Dock,貼靠的意思,他的每一個介面部分可以取出來,重新組合,所以你看到的vs有時候不是這樣的,不用擔心。

每一塊稱為一個檢視,當你不小心關掉了一個檢視,從選單欄的"檢視"中可以找到並開啟它。

還有一部分檢視在"除錯"選單中

接下來你要認識的第一個檢視叫做"解決方案資源管理器"

Vs在組織專案的時候,採用兩層概念,一個叫做,專案,一個叫做解決方案。

一個專案負責產生一個exe或者dll。

一個解決方案包含若干個專案。

一切操作的起點,都是這個解決方案資源管理器。

在helloworld專案上點右鍵屬性,就是上圖中高亮的那裡

你可以看到這個內容,程式集名稱,就是專案生成的exe或者dll的名字,比如我們把他改成h01.

把生成的數出路徑也修改一下,方便我們找到他,這裡用相對路徑絕對路徑都可以。

從生成這裡點"生成解決方案",或者從資源管理器右鍵操作,或者用快捷鍵,都行。

如無意外,輸出檢視會如下顯示,時刻關注輸出檢視。

然後我們的exe就產生了,你製造了一個執行程式。

點選它,一閃而過。

因為他會自動用命令列執行,執行完就退出了。

真正的HelloWorld,三行

就是這麼快,前面只是隨便熟悉一下環境,你的第一個程式碼,加三行

從解決方案資源管理器中雙擊program.cs,然後把程式碼弄成下面這樣再生成。

請注意,結尾是分號;不是冒號

請注意,大小寫是有區別的,Console 和 console 不一樣

    請注意,//之後叫做註釋,可以隨便寫,不起作用

程式碼如圖。

等下我們會講解程式碼,你先抄上去好了。

重新生成,找到exe,執行。

現在不會一閃而過了,我們的HelloWorld也完成了。

關於除錯的話題,我們這裡先不講。

自己試一試吧,寫下你想對這個世界說的豪言壯語

然後生成一個EXE並執行它。

 

下次再見,哈庫拉瑪塔塔。

哦不,對不起,再見早了,如果你是一個強迫症患者,肯定還希望瞭解每一個細節,那就接著往下看。

發生了什麼

我們寫了一個c#程式,可是發生了什麼?

你可能過去認為程式設計師眼中的程式碼是黑客帝國這樣的,並不是

程式碼看起來的感覺應該是這樣的,和小學生的關係圖沒啥區別。

C系語言首先有個 語句和塊的概念。

語句的結束是";",有一些特殊語句用"換行符"結束,這裡沒涉及這種特殊語句。

塊是用{}包裹起來的部分,塊根據語法前後還會有關鍵字。

語句

語句

任何一段C系語言的程式碼,你首先要用語句和塊來看待它。

用語句和塊來看待它。用語句和塊來看待它。用語句和塊來看待它。重要的事情說三遍,此處先不要糾結那些東西背後的語法意義。

你先要從大的層面將它快速拆解為語句和塊。

他們是一顆關係樹。我們去看那顆樹,別盯著葉子不放。

 

你能用塊和語句的區分,畫出這顆關係樹麼?不能也沒關係,多寫程式碼,這棵樹就會慢慢的清晰出現在你的腦袋裡。

這裡出現了三種塊,三種語句。

請注意,往後的部分就是枯燥與更枯燥,你可以把他們作為一個手冊,在你需要的時候再回來看。

NameSpace名稱空間

Namespace helloworld 開頭的這個塊,叫做名稱空間,他只關乎名字。

這裡我們舉個例子,NameSpace只關乎名字

Using 語句塊關乎方便的使用名字,我們現在使用"helloworld.conststr.conststrclass.str"去訪問,太長了。

Using可以讓他更方便

這就是using,using還有一個別名的用法,你有興趣可以自己瞭解一下。

Using完全是可選的,可以不用using。但是程式碼就成了這樣子

Class型別定義

Class叫做型別定義語句塊,可以簡稱類定義,根據上下文也可以簡稱型別或者類。

類是歸類,分類的意思,是物件導向程式設計提出的一種概念,這個我們回頭會專門去講解。

名稱空間之下必須是類語句塊。類語句塊裡面可以有成員語句或者成員語句塊。

成員分為函式和變數。函式和變數是基本的程式設計單位。

這裡使用了兩種class 語句塊

一個class

一個 public class

Class 之前的public是修飾符,他表示這個class 公開可被其他模組訪問,模組指的是一個dll或者exe。

函式定義

函式定義和namespace 和 class 不同,沒有關鍵字。

函式在c系語言的語法約定如下 :

【修飾符】返回型別 名稱 (【引數…】)

Static 是修飾符

Void 是返回型別,void表示不返回

Main 是函式名稱

然後後面有個括號,必須有個括號,沒引數也要括號,才認為是函式的定義。

Program.Main 是控制檯程式約定的入口函式,args是控制檯程式輸入的指令,這個我們下一節再講。

而namespace helloworld則是因為這裡,你改了就執行不了了。

函式呼叫語句

我們學習了兩個函式 呼叫語句Console.WriteLine,Console.ReadLine

 

下一次再見。

哈庫拉瑪塔塔。

相關文章