學(xué)習(xí)任何知識之前,不妨先問問自己學(xué)這個(gè)知識的目的是為了什么?有了既定的目的,那么學(xué)習(xí)起來才會充滿干勁。
筆者學(xué)習(xí)C#的目的,一是為了擁有一個(gè)屬于自己的游戲,二是提升自己的多元能力。
OK,接下來就開啟學(xué)習(xí)C#之路!(內(nèi)容中也許因?yàn)榱私獠欢?,多少存在一些錯(cuò)誤,還請大家多多指正!)
一、C# 基本概述
1、C# 是什么?
C# (讀作?See Sharp
?)是由 C/C++ 衍生出來的一門新式編程語言,不僅面向?qū)ο?,而且還是類型安全。開發(fā)人員利用 C# 能夠生成在 .Net 中運(yùn)行的多重安全可靠的應(yīng)用程序。
C# 是面向?qū)ο蟮摹⒚嫦蚪M件的編程語言。其提供了相應(yīng)的語言構(gòu)造來直接支持這些概念,讓 C# 成為一門非常自然的語言,可以用來創(chuàng)建和使用軟件組件。C# 本質(zhì)上就是面向?qū)ο蟮恼Z言。
2、C# 能做什么?
(1)做游戲
市面上比較流行的兩款游戲引擎 U3D 和 UE4。其中基于 U3D 開發(fā)的游戲,基本上都是用 C# 語言寫得。
(2)Windows 窗體應(yīng)用程序
(3)Web 服務(wù)
(4)客戶端-服務(wù)器應(yīng)用程序
(5)移動(dòng)端應(yīng)用程序
and so on…
3、.NET 體系結(jié)構(gòu)
所有的編程語言都需要相應(yīng)的環(huán)境,才能夠運(yùn)行。例如,Java 是一門跨平臺語言,這是因?yàn)樗詭?Java 虛擬機(jī),只要配置好,那么就可以在 Windows、Linux等操作系統(tǒng)下運(yùn)行。C# 也是一樣的,需要一個(gè)可以承載程序運(yùn)行的運(yùn)行環(huán)境,而這個(gè)運(yùn)行環(huán)境就是 .NET。
一般情況下,Windows 系統(tǒng)中都裝有 .NET 環(huán)境,這是因?yàn)?Windows 中的大部分軟件都是基于 C 語言系列開發(fā)的,因此需要 .NET 環(huán)境來支持運(yùn)行。所以在 Windows 上安裝好相應(yīng)的軟件,就可以開始輸出?Hello World!
?
.NET 是名為公共語言運(yùn)行時(shí)(CLR)的虛執(zhí)行系統(tǒng)和一組類庫。
CLR 是微軟對公共語言基礎(chǔ)結(jié)構(gòu)(CLI)國際標(biāo)準(zhǔn)的實(shí)現(xiàn)。
CLI是創(chuàng)建執(zhí)行和開發(fā)環(huán)境的基礎(chǔ),語言和庫可以在其中無縫地協(xié)同工作。
二、輸出第一個(gè)程序
接下來通過所有學(xué)習(xí)所有編程語言都要經(jīng)歷的第一步,使用程序,輸出?Hello World
?。通過這一段小小的程序,來了解一下 C# 程序的結(jié)構(gòu)。
using System;
namespace Study001
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
程序輸出:
結(jié)構(gòu)解析:
1、以上的 C# 程序包含的部分:
(1)?using System;
? 引用命名空間。
(2)?namespace Study001
命名空間聲明。
(3)?class Program
? 類。
(4)?static void Main(string[] args)
?程序運(yùn)行入口方法。
(5)?Console.WriteLine("Hello World!");
? 程序語句。
2、各部分解析(經(jīng)過嘗試的)
下面的一個(gè)程序即對應(yīng)圖中的一個(gè)紅框。
(1)一個(gè)程序中可以擁有多個(gè) ?using
? 語句。有點(diǎn)類似于 Python 語言中的 import,導(dǎo)入相應(yīng)命名空間,就可以使用該命名空間中的類型。
(2)一個(gè)程序中可以使用多個(gè) ?namespace
? 來命名多個(gè)命名空間。
(3)一個(gè)程序中可以聲明多個(gè)類。
using System;
namespace Study001
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("I am king!");
}
}
class ClassTwo
{
static void printwho()
{
Console.WriteLine("我是屬于ClassTwo");
}
}
}
namespace Study002
{
class ClassThree
{
static void printme()
{
Console.WriteLine("我是屬于ClassThree");
}
}
}
以上程序可以成功輸出結(jié)果:
(4)一個(gè)程序中只能有一個(gè) Main 主方法。如果定義了多個(gè)主方法,會產(chǎn)生以下編譯錯(cuò)誤。
三、總結(jié)
C# 學(xué)習(xí)系列的第一篇文章就到此結(jié)束了。在這個(gè)學(xué)習(xí)過程中,對于筆者而言,有收獲,但同時(shí)也有疑慮。
例如:
(1)一個(gè)程序中既然可以有多個(gè)命名空間和類,那么如何將它們聯(lián)系在一起?
(2)一個(gè)程序中命名多個(gè)命名空間和類,這樣的操作值得推薦嗎?