在 .Net 3.5 之前所提供的 Collections 不是 thread-safe 的,必須使用.Net 4.0 ,System.Collections.Concurrent Namespace 下的泛型。
錯誤寫法
List<string> testData = new List<string>();
List<string> resultData = new List<string>();
Parallel.For(0, testData.Count() - 1, (i, loopState) =>
{
resultData.Add(testData[i]);
});一般迴圈的寫法
static void Main(string[] args)
{
int x = 0;
for(int i = 0 ; i<10 ; i++)
{
x++;
}
}利用 #if DEBUG,並在區段中加入要顯示的文字,將 web.config 的 debug mode 設定為 true,就可以輸出資料,再將 debug mode 設定為 false,就可以隱藏資料!
#if DEBUG
Response.Write("要輸出的資訊");
#endifDateTime的時間單位最小為秒,如果要到毫秒就必須使用Stopwatch,可以用來計算程式執行時間!
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 1; i <= 10; i++)
{
System.Threading.Thread.Sleep(1000);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}可以用來判斷用戶日期格式是否輸入錯誤!
/// <summary>
/// 判斷是否為日期
/// </summary>
public static bool IsDate(object obj)
{
DateTime date;
return DateTime.TryParse(obj.ToString(), out date);
}可以用來判斷用戶是否輸入錯數值!
/// <summary>
/// 判斷是否為數字
/// </summary>
public static bool IsNumeric(object obj)
{
double retNum;
bool Result = Double.TryParse(obj.ToString(), System.Globalization.NumberStyles.Any
, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
return Result;
}第一個參數加入this,就可以在對應型態的變數使用此擴充方法,在底層寫了這個靜態方法後,就可以像原本的分割一樣用str.Split(",")的方式執行字串分割。
public static string[] Split(this string Text, string Separator, StringSplitOptions SSO = StringSplitOptions.None)
{
return Text.Split(new string[] { Separator }, SSO);
}判斷字串中是否有非英文及數字的字元,可以用來判斷用戶是否輸入中文字!
/// <summary>
/// 判斷字串中是否有非英數文字
/// </summary>
public static bool ContainUnicode(string Text)
{
return (Text.ByteCount() > Text.Length);
}
/// <summary>
/// 取得字串的位元數
/// </summary>
public static int ByteCount(this string Text)
{
return System.Text.Encoding.UTF8.GetByteCount(Text);
}SharpZipLib 官方網站下載:http://www.icsharpcode.net/OpenSource/SharpZipLib/ or SharpZipLib 0.86 壓縮檔案
Compress("C:\\ziproute", "C:\\ziproute.zip", 5);
// 傳入參數: 來源路徑, 目的壓縮檔名(.zip), 壓縮比( 0=僅儲存, 9=最高壓縮比 )
public static void Compress(string dir, string zipFileName, int level)
{
string[] filenames = Directory.GetFiles(dir);
byte[] buffer = new byte[4096];
using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFileName)))
{
// 設定壓縮比
s.SetLevel(level);
// 逐一將資料夾內的檔案抓出來壓縮,並寫入至目的檔(.ZIP)
foreach (string filename in filenames)
{
ZipEntry entry = new ZipEntry(filename);
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(filename))
StreamUtils.Copy(fs, s, buffer);
}
}
}