2017年11月15日 星期三
C# - 列舉的 if 寫法
從 Delphi 以來都有用列舉的習慣,
在 Delphi 有 in 可以用,就像 SQL 中的 in 的用法一樣;
但是在 C# 中沒有 in 可以用,只能在 if 中寫的落落長的東西,例如:
if (currentCar == Cars.Taxi || currentCar == Cars.Bus || currentCar = MRT)
如果要判斷很多 if 就會很長很長又很長....
所以某天想到可以用泛型來處理,程式如下:
public static bool InValueSet<T>(T compareValue, T[] valueSet)
{
foreach (T baseValue in valueSet)
{
if (compareValue.Equals(baseValue))
return true;
}
return false;
}
所以上面的 if 就可以變成下面這樣的寫法,如下:
if (InValueSet<Cars>(currentCar, new Cars[] {Cars.Taxi, Cars.Bus, Cars.MRT})
然後可以宣告一個集合,如下:
Cars[] MassTransport = new Cars[] {Cars.Taxi, Cars.Bus, Cars.MRT}
然後就可以改成如下寫法:
if (InValueSet<Cars>(currentCar, MassTransport)
這樣就簡潔多了,舒坦............
如何在安裝 Windows Service 時,指定不同名稱
我們的 AP Server 是一個 windows service ,
但是每次遇到客戶需要安裝好幾個環境時,
就會需要 compile 好幾個程式給客戶,
只是因為用 InstallUtil.exe 在安裝 windows service 時無法指定名稱。
總覺得這樣不是辦法,經過一陣估狗之後發現有別的指令可以用,如下:
參考:【以任何方式重写.NET Windows服务名称,而不重新编译?】
但是每次遇到客戶需要安裝好幾個環境時,
就會需要 compile 好幾個程式給客戶,
只是因為用 InstallUtil.exe 在安裝 windows service 時無法指定名稱。
總覺得這樣不是辦法,經過一陣估狗之後發現有別的指令可以用,如下:
sc create MyService binPath= "MyService.exe" DisplayName= "MyService"
sc description MyService "My description"
參考:【以任何方式重写.NET Windows服务名称,而不重新编译?】
標籤:
MS Windows Server,
Win8.1
如何不要讓 Microsoft SQL Server Management Studio 一直跳出中文輸入法
因為每次跳到 Microsoft SQL Server Management Studio 時,
輸入法就自動轉為中文輸入,
這實在是一件很惱人的事情,
後來很努力地找尋,終於在【選項】中找到可以設定的地方
在【國際設定】中,將【語言】改成【與 Microsoft Windows 相同】就可以
不過剛剛發現,在 17.3 版之中還沒有這個選項可以選 T_T
輸入法就自動轉為中文輸入,
這實在是一件很惱人的事情,
後來很努力地找尋,終於在【選項】中找到可以設定的地方
在【國際設定】中,將【語言】改成【與 Microsoft Windows 相同】就可以
不過剛剛發現,在 17.3 版之中還沒有這個選項可以選 T_T
訂閱:
文章 (Atom)