NetCoreNet5 Web應用開發基礎-C#進階一

根據學習程序和後續MVC開發需要,我們需要對C#進一步的學習,C#是一門高階的面向物件程式語言,沒辦法一下就能學完講透,大家可以自行根據需要進行擴充套件學習,也可以跟著本系列逐步逐步的進行學習。

String的Format方法

String。Format( “Format String with {0} and {1}”, item1, item2, item3, …… );

接受一個格式字串和幾個引數

格式字串由以{}分隔的格式項組成,{}為佔位符,透過Format方法格式化後會被後面的具體引數值給替換

第一項為{0}

第二項為{1}

返回一個格式化字串

String.Format示例

DateTime

DateTime是一個包含日期、時間的型別

建立具有特定年、月、日、時、分和秒的日期

DateTime = new DateTime(2015, 4, 20, 9, 15, 1);

// 2015年4月20日上午9:15:01

DateTime currentMoment = DateTime。 Now;//獲取系統當期日期時間DateTime。 Now屬性:Day(日),Month(月),Year(年),Hour(時),Minute(分),Second(秒)

日期示例

日期格式化

DateTime dt = DateTime。Now;

Console。WriteLine(string。Format(“{0:d}”, dt));    //2021-03-10

Console。WriteLine(string。Format(“{0:D}”, dt));    //2021年3月10日

Console。WriteLine(string。Format(“{0:f}”, dt));    //2021年3月10日 14:46

Console。WriteLine(string。Format(“{0:F}”, dt));    //2021年3月10日 14:46:59

Console。WriteLine(string。Format(“{0:g}”, dt));    //2021-03-10 14:46

Console。WriteLine(string。Format(“{0:G}”, dt));    //2021-03-10 14:46:59

Console。WriteLine(string。Format(“{0:M}”, dt));    //3月10日

Console。WriteLine(string。Format(“{0:R}”, dt));    //Wed, 10 Mar 2021 14:46:59 GMT

Console。WriteLine(string。Format(“{0:s}”, dt));    //2021-03-10T14:46:59

Console。WriteLine(string。Format(“{0:t}”, dt));    //14:46

Console。WriteLine(string。Format(“{0:T}”, dt));    //14:46:59

Console。WriteLine(string。Format(“{0:u}”, dt));    //22021-03-10 14:46:59Z

Console。WriteLine(string。Format(“{0:U}”, dt));    //2021年3月10日 6:46:59

Console。WriteLine(string。Format(“{0:Y}”, dt));    //2021年3月

Console。WriteLine(string。Format(“{0}”, dt));      //2021-03-10 14:46:59

Console。WriteLine(string。Format(“{0:yyyyMMddHHmmssffff}”, dt));   //202103101446593041

String的Split方法

從字串呼叫

接受一個char引數作為分隔符

返回一個字串陣列

示例

這裡只演示了單字元間隔,因為這個最常用,其他幾個過載請自行查閱

string text = “red, green, blue”;

string [] colors = text。Split(‘,’);

// colors[0] is “red”

// colors[1] is “ green”

// colors[2] is “ blue”

String的ToUpper和ToLower 方法

不帶引數

返回一個分別包含大寫或小寫字元的字串

ToUpper把字串全部轉換為大寫

ToLower 把字串全部轉換為小寫

string x = “ Nissan”;

string y = “ Toyota Camry ”;

string z = “Hyundai ”;

string a = x。ToLower(); // a is “ nissan”

string b = y。Trim()。ToUpper(); // b is “TOYOTA CAMRY”

string c = z。ToUpper(); // c is “HYUNDAI ”

Int32.TryParse 和 Double.TryParse

把字串轉化為數字型別

語法

有兩個引數

包含要轉換的數字的字串

out int或out double

返回bool值

如果string表示一個可以轉換的數字,則為true

例項

bool outcome;

int num1;

double num2;

outcome = Int32。TryParse(“-99”, out num1);

// outcome 為 true, num1 為 -99

outcome = Double。TryParse(“12。5”, out num2);

// outcome為 true, num2為 12。5

Int32.Parse 和 Double.Parse

與上面的兩個方法意圖一致,都是把字串轉化為數字型別

只有一個引數

包含要轉換的數字的字串,分別返回Int32或Double

int apple = Int32。Parse(“-99”);

// apple is -99

double orange = Double。Parse(“88。1”);

// orange 為 88。1

int bomb = Int32。Parse(“KaBoom”);

// 丟擲異常,因為“KaBoom”不能轉化為數字

當給出一個無效字串時

TryParse將返回false而不丟擲異常

Parse將丟擲異常

下面講一個C#比較重要的知識點“擴充套件方法”

擴充套件方法可以在不修改或者建立子類的情況下對現有型別新增方法

擴充套件方法的要求

方法所在的類必須是靜態的

方法也必須是靜態的

方法的第一個引數必須是你要擴充套件的那個型別,比如你要給String擴充套件一個方法,那麼第一個引數就必須是String

在第一個引數前面還需要有一個this關鍵字

實用擴充套件方法要點

如果新增擴充套件方法的類擁有與擴充套件方法相同簽名的方法,則擴充套件方法不會別調用,意思會被類本身的相同簽名的方法所覆蓋

擴充套件方法是用類的例項物件呼叫,而非普通靜態方法那樣用類呼叫

需要使用擴充套件方法的地方 需要引用擴充套件方法所在的名稱空間,否則不能識別類的擴充套件方法我們來看一個例子仔細根據上面的要求和要點理解一下上面的程式碼就是給String類添加了一個名為Stectch的擴充套件方法,作用是把字串拆分成一個一個的字元,用“ ”重新拼接成一個新的字串返回

string abc = “APPLE”;

string xyz = abc。Stretch(); // xyz 為 “A P P L E ”

因為擴充套件方法是實際開發中非常重要,所以我們現在嘗試為String寫幾個擴充套件方法來加深理解,我們在開發中經常對字串進行判斷,比如字串是否是整數,是否是日期型別,是否是數字型別,下面我們來嘗試編寫者幾個擴充套件方法

首先建立一個名為StringUtl的靜態類

public static class StringUtl

{}

然後在此類裡面編寫上面說的幾個擴充套件方法

呼叫方法與

string abc = “11”;

Bool b= abc。IsInteger(); // b為 True

其他幾個擴充套件方法類似呼叫即可,現在大家可以根據自己實際需要和想法為各個類進行合理的新增擴充套件方法了。

本節C#進階學習就到這裡了,本節介紹的內容非常重要,請大家多思考理解,並動手實踐,本節知識在後續學習中會實際用到。

下一節我們將介紹CSS/HTML的一個框架BootStrap