一行Code有許多種表達方式,可以用一般最大眾化的表示方式,也可以使用專家級的表示方式,兩種方式皆能達到同樣的效果,那何不使用最簡潔的方式呢?
以下我們將介紹幾種快速簡潔的Code表達方式。
表示方法如下
另外?:可以連續使用,類似以下:
這邊要注意的是,?:表示式是右向關聯,例如 a ? b : c ? d : e 會先判斷c ? d : e,
整個表示式其實為 a ? b : (c ? d : e)
以下我們將介紹幾種快速簡潔的Code表達方式。
判斷式給值
在一般遇到一個 if else 判斷式情況下,許多人就會很順手的馬上寫完 if else,bool x = true;
int y = 0;
if (x)
{
y = 100;
}
else
{
y = -100;
}
但其實有更簡潔的寫法:
bool x = true;
int y = 0;
y = x ? 100 : -100;
表示方法如下
Variable = (Statment) ? TrueValue : FalseValue;
另外?:可以連續使用,類似以下:
Variable = (Statment1) ? Value1 : (Statement2) ? Value2 : Value3;
這邊要注意的是,?:表示式是右向關聯,例如 a ? b : c ? d : e 會先判斷c ? d : e,
整個表示式其實為 a ? b : (c ? d : e)
Null判斷給值
類似上一種寫法,C#在Null判斷給值上提供一個??運算子,表示如下:
string x = null;
string y = string.Empty;
y = x ?? "Hello";
當x為null時,y的值會等於Hello
二進制移位
Java和C#提供了一個二進制移位(<< >>)的運算子,根據移動的位數N將原有的數值以2的N次方進行運算,例如:
例如:Dictionary<String, List<Queue<String>>>,
這種情況在宣告或使用時要寫的漏漏長,
.Net提供了別名的功能,
只要在namespace裡加上using就能產生別名,
例如:using QueueList = List<Queue<String>>,
但缺點為該別名只能在這個File裡面用到,
就算在同個namespace不同File是無法識別的。
int x = 64;
int y = x >> 2; // y = 64 / pow(2, 2)
建立型別別名(Alias)
當我們使用集合型別時,有時會遇到集合裡面又包了許多層的集合,例如:Dictionary<String, List<Queue<String>>>,
這種情況在宣告或使用時要寫的漏漏長,
.Net提供了別名的功能,
只要在namespace裡加上using就能產生別名,
例如:using QueueList = List<Queue<String>>,
但缺點為該別名只能在這個File裡面用到,
就算在同個namespace不同File是無法識別的。
using System;
using System.Collections.Generic;
namespace ConsoleTest
{
using QueueList = List<Queue<String>>;
class Program
{
static void Main(String[] args)
{
var queue1 = new Queue<String>();
var queue2 = new Queue<String>();
var qList = new QueueList()
{
queue1, queue2
};
queue1.Enqueue("Item1");
queue1.Enqueue("Item2");
queue2.Enqueue("Item3");
queue2.Enqueue("Item4");
qList.ForEach(q =>
{
foreach (var s in q)
{
Console.WriteLine(s);
}
});
Console.ReadLine();
}
}
}
參考來源:
留言
張貼留言