C# Tips-2

上次寫過一些平常開發中總結的小技巧,這次繼續補充一部分。

1. 多個Using簡化書寫。

我們經常會遇到需要使用多個using對象的時候,這時候我們可能這樣寫代碼:

using (Class1 c1 = new Class1(someParam1))
{
using (Class2 c2 = new Class2(someParam2))
{
//TODO:在這裏添加功能代碼
}
}

實際上,我們可以簡化書寫:

using (Class1 c1 = new Class1(someParam1),Class2 c2 = new Class2(someParam2))
{
//TODO:在這裏添加功能代碼
}

2. 很多時候,我們在判斷某字符串是否是某幾個指定字符串之一,可能會寫出下面的代碼:

bool NameExists(string name) {
return name == “張三” || name == “李四” || name == “王五” ||name == “趙六”;
}

但3.0以後這裏其實有更加簡單的寫法:

bool NameExists(string name){
return new[] { “張三”, “李四”, “王五”, “趙六” }.Contains(name);
}

或者如果這種判斷很頻繁的話,我們還可以使用擴展方法:

public static bool In(this string name, params string[] names)
{
foreach (string specialName in names)
{
if (name != specialName) return false;
}
return true;
}

var name
="test";
Console.Write(name.In(
"張三",“李四”, “王五”, “趙六”);

3. 在比較字符串時,我們有時會忽略大小寫比較,你可能會這樣寫代碼:str1.ToUpper() == str2.ToUpper(), 不過實際上string對象已經提供了很多更好的方法,如: str1.Equals ( str2, StringComparison.OrdinalIgnoreCase)

4. ??用於在對象爲空時指定默認值,我們可以使用這個特性做多個默認值的綁定

string result = var1 ?? var2 ?? var3 ?? String.Empty;

5. 這種用法並不推薦,不過你確實可以使用中文等非英語語言對類或者方法進行命名,如:

public string 方法1(){
return “XXXXXXX”;
}

不僅如此,你甚至還可以使用轉義符來命名:

public string 測試\u9999哈(){
return "aaa";
}

實際調用的方法名爲:測試香哈();

6. 在C#中我們同樣可以創建類似JS的匿名行內函數,如:

var var1 = new Func<String>(() =>{
return “測試測試”;
})();

希望這些總結對讀者同樣會有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章