C#教程3:基本语言结构
????????在 C# 教程的這一部分中,我們介紹了 C# 語言的基本編程概念。我們介紹非常基本的程序。我們使用變量、常量和基本數據類型。我們讀寫控制臺;我們提到了變量插值。
一、 C# 常規示例
Program.cs using System;namespace Simple {class Program{static void Main(string[] args){Console.WriteLine("This is C#");}} }程序將“This is C#”消息打印到控制臺。我們逐行解釋。
using System;
????????using 關鍵字將特定的命名空間導入我們的程序。創建命名空間是為了對命名實體進行分組和/或將命名實體與其他實體區分開來。這可以防止名稱沖突。此行是 C# 語句。每個語句都以分號結束。
?namespace Simple
????????我們聲明一個命名空間。命名空間用于組織代碼并防止名稱沖突。
class Programe
{
??? ...
}
????????每個 C# 程序都是結構化的。它由類及其成員組成。類是 C# 程序的基本構建塊。上面的代碼是一個類定義。定義有一個主體,以左花括號 { 開始,以右花括號 } 結束。
static void Main(string[] args)
{
??? ...
}
????????Main是一種方法。方法是為完成特定工作而創建的一段代碼。我們不是將所有代碼都放在一個地方,而是將其分成幾部分,稱為方法。這為我們的應用程序帶來了模塊化。每個方法都有一個主體,我們在其中放置語句。方法的主體用大括號括起來。
????????Main 方法的具體工作是啟動應用程序。它是每個控制臺 C# 程序的入口點。該方法被聲明為靜態的。無需創建 Program 類的實例即可調用此靜態方法。首先我們需要啟動應用程序,然后,我們可以創建類的實例。 void 關鍵字表示該方法不返回任何值。 (方法可能會也可能不會返回值。)
????????Main 方法有 args 參數,它存儲命令行參數。通過命令行參數,程序的用戶可以傳遞它的值。
Console.WriteLine("This is C#");
????????在此代碼行中,我們將“This is C#”字符串打印到控制臺。要將消息打印到控制臺,我們使用 Console 類的 WriteLine 方法。該類代表控制臺應用程序的標準輸入、輸出和錯誤流。請注意,Console 類是 System 命名空間的一部分。這一行是使用 using System 導入命名空間的原因;陳述。如果我們不使用該語句,我們將不得不使用 WriteLine 方法的完全限定名稱:System.Console.WriteLine("This is C#");。
$ dotnet run This is C#二、近代簡化的C#示例
????????多年來,C# 得到了顯著改進和簡化。對于初學者來說,該語言變得更加平易近人。
Program.cs
namespace Simple;class Program {static void Main(string[] args){Console.WriteLine("This is C#");} }從 C# 10 開始,我們可以省略 using System;陳述。它會自動包含在隱式使用中。
namespace Simple;????????此外,命名空間聲明也可以減少(C# 10)。這稱為文件范圍的命名空間,它減少了對塊和縮進的需求。
????????使用頂級語句 (C# 9),我們可以進一步簡化代碼。我們不需要使用 Main 方法作為起點,代碼也不必放在應用程序類中。
Note:?Only one file in the application may use top-level statements.
????????對于小程序,我們也可以省略命名空間聲明。
Program.cs
Console.WriteLine("This is C#");????????現在,原來的 12 行代碼示例被縮減為單行代碼。
三、C# 控制臺讀入數據
我們也可以使用 Console 類來讀取值。
Program.cs
Console.Write("Enter your name: "); string name = Console.ReadLine(); Console.WriteLine($"Hello {name}");- 此處Console.Write、Console.WriteLine相當于C語言的print語句。
第二個程序從控制臺讀取一個值并打印出來。
string name = Console.ReadLine();
- Console.ReadLine()此處相當于c語言的input語句
????????我們從終端讀取了一行。當我們按下 Enter 鍵時,輸入被分配給 name 變量。輸入存儲在名稱變量中,該變量聲明為字符串類型。
Console.WriteLine($"Hello {name}");????????在此代碼行中,我們進行字符串格式化。 {name} 說明符被替換為 name 變量的值。
$ dotnet run Enter your name: Jan Hello Jan四、C#?命令行參數
????????C# 程序可以接收命令行參數。當我們運行它時,它們遵循程序的名稱。 C# 程序在 args 字符串數組中接收命令行參數。
Program.cs
for (int i = 0; i < args.Length; i++) {Console.WriteLine($"{args[i]}"); }????????命令行參數可以傳遞給 Main 方法。
for (int i = 0; i < args.Length; i++) {Console.WriteLine($"{args[i]}"); }????????我們使用 for 循環遍歷這些參數的數組并將它們打印到控制臺。 Length 屬性給出了數組中元素的數量。稍后將更詳細地描述循環和數組。
$ dotnet run 1 2 3 1 2 3????????我們提供三個數字作為命令行參數,并將它們打印到控制臺。
五、C# 變量
????????變量是存儲數據的地方。變量具有名稱和數據類型。數據類型確定可以為變量分配哪些值,例如整數、字符串或布爾值。隨著時間的推移,程序變量可以獲得相同數據類型的各種值。在對變量進行任何引用之前,變量總是被初始化為其類型的默認值。
Program.cs
string city = "New York";
string name = "Paul";
int age = 35;
string nationality = "American";
Console.WriteLine(city);
Console.WriteLine(name);
Console.WriteLine(age);
Console.WriteLine(nationality);
city = "London";
Console.WriteLine(city);
????????示例中有四個參數
string city = "New York";????????我們聲明一個字符串類型的城市變量并將其初始化為“New York”值。
string name = "Paul"; int age = 35;????????我們聲明并初始化另外兩個變量。我們可以將兩個語句放在一行上。但是出于可讀性的原因,每個語句都應該在單獨的行上。
Console.WriteLine(city); Console.WriteLine(name); Console.WriteLine(age); Console.WriteLine(nationality);我們將變量的值打印到終端。
city = "London";我們為城市變量分配了一個新值。
$ dotnet run New York Paul 35 American London六、var變量的鍵值
????????可以使用 var 關鍵字隱式鍵入方法范圍內的變量。變量始終是強類型的,但對于 var,類型是由 C# 編譯器從賦值的右側推斷出來的。
Program.cs
var name = "Peter"; var age = 23;Console.WriteLine($"{name} is {age} years old");name = "Jozef"; age = 32;Console.WriteLine($"{name} is {age} years old");Console.WriteLine(name.GetType()); Console.WriteLine(age.GetType());在程序中,我們有兩個隱式類型變量。
var name = "Peter"; var age = 23;????????在語句的左側,我們使用 var 關鍵字。名稱變量為字符串類型,年齡為 int。類型是從賦值的右側推斷出來的。
Console.WriteLine(name.GetType()); Console.WriteLine(age.GetType());我們使用 GetType 確定變量的類型。
$ dotnet run
Peter is 23 years old
Jozef is 32 years old
System.String
System.Int32
七 C#列表類型
????????雖然變量保存單個值,但可以將多個值添加到集合中。列表是一系列元素,可以通過使用 [] 進行索引操作來訪問。可以使用例如遍歷列表的元素foreach 關鍵字。
????????List 類型位于 System.Collections.Generic 中,它包含在隱式 usings 中。
Program.cs
var words = new List<string> { "stone", "rock", "falcon", "sky" };Console.WriteLine(words[2]);Console.WriteLine();foreach (var word in words) {Console.WriteLine(word); }在示例中,我們處理了一個單詞列表。
var words = new List<string> { "stone", "rock", "falcon", "sky" };????????使用新關鍵字創建一個列表對象。在尖括號 <> 之間,我們指定列表元素的數據類型。該列表使用大括號 {} 內的元素進行初始化。
Console.WriteLine(words[2]);在這里,我們將第三個元素打印到控制臺。 (索引從 0 開始。)
foreach (var word in words) {Console.WriteLine(word); }????????使用 foreach 循環,我們遍歷列表的所有元素并將它們打印到控制臺。在每個循環中,單詞變量被賦予列表中的一個元素。
$ dotnet run falconstone rock falcon sky八、C# 丟棄的參量(元組操作)
????????丟棄是特殊的只寫變量,用于丟棄程序員不感興趣的值。 _(下劃線字符)用于丟棄。
Program.cs
var vals = (1, 2, 3, 4, 5, 6); (int x, int y, int z, _, _, _) = vals; Console.WriteLine(x); Console.WriteLine(y); Console.WriteLine(z);????????該示例定義了一個值元組。通過使用解構操作,我們將元組的值分配給變量。
var vals = (1, 2, 3, 4, 5, 6);
我們定義了一個包含六個值的元組。元組是有序的異構元素的集合。
(int x, int y, int z, _, _, _) = vals;????????比如說,我們只對元組的前三個值感興趣。在賦值的左側,我們定義了三個變量:x、y 和 y。由于 vals 元組有六個元素,我們需要在左側也有六個變量。在這里,我們可以將 _ 字符用于其余變量。通過這種方式,我們表明目前這些值對我們來說并不重要,我們不會使用它們。
九、C# 范圍函數
????????Range 方法生成指定范圍內的數字序列。第一個參數是序列中第一個整數的值。第二個參數是要生成的連續整數的數量。
Program.cs
foreach(var el in Enumerable.Range(1, 10)) {Console.WriteLine(el); }????????該示例使用 foreach 循環將值 1..10 打印到終端。整數序列是使用 Range 方法生成的。
十、C# 常量
????????與變量不同,常量保留其值。一旦初始化,它們就不能被修改。常量是使用 const 關鍵字創建的。
Program.cs
const int WIDTH = 100; const int HEIGHT = 150; int var = 40;var = 50;// WIDTH = 110;????????在這個例子中,我們聲明了兩個常量和一個變量。
const int WIDTH = 100; const int HEIGHT= 150;????????我們使用 const 關鍵字通知編譯器我們聲明了一個常量。以大寫字母書寫常量是一種慣例。
int var = 40;var = 50;????????我們聲明并初始化一個變量。稍后,我們為變量分配一個新值。
// WIDTH = 110;????????這對于常數是不可能的。如果我們取消注釋這一行,我們會得到一個編譯錯誤。
十一、C# 字符串格式
????????從變量構建字符串是編程中非常常見的任務。 C# 有 string.Format 方法來格式化字符串。
Program.cs
int age = 34; string name = "William";string msg = string.Format("{0} is {1} years old.", name, age); Console.WriteLine(msg);????????字符串在 C# 中是不可變的。我們無法修改現有字符串。我們必須從現有字符串和其他類型創建一個新字符串。在代碼示例中,我們創建了一個新字符串。我們還使用來自兩個變量的值。
int age = 34; string name = "William";Here we define two variables.
string msg = string.Format("{0} is {1} years old.", name, age);????????我們使用內置字符串類的 Format 方法。 {0}、{1} 是評估變量的位置。數字代表變量的位置。 {0} 對第一個提供的變量求值,{1} 對第二個變量求值。
$ dotnet run William is 34 years old.十二、C#?字符串插值
????????一些動態語言如 Perl、PHP 或 Ruby 支持字符串/變量插值。變量插值是用字符串文字中的值替換變量。 C# 自 C# 6.0 起支持變量插值。
Program.cs
string name = "Peter"; int age = 34;string msg = $"{name} is {age} years old";Console.WriteLine(msg);????????在代碼示例中,我們使用變量插值構建字符串。
string msg = $"{name} is {age} years old";字符串以 $ 字符開頭,變量在大括號內。
$ dotnet run Peter is 34 years old參考地址
C# basics - covering basics of C# (zetcode.com)
QPainter類使用詳解_程序猿老樊的博客-CSDN博客_qpainter的使用
總結
以上是生活随笔為你收集整理的C#教程3:基本语言结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基础数学:通俗解释,啥叫随机变量?
- 下一篇: C#教程4:数据类型