highlight.js

顯示具有 c# 標籤的文章。 顯示所有文章
顯示具有 c# 標籤的文章。 顯示所有文章

星期五, 12月 07, 2012

.NET SortedList 存放同樣 key 的物件

今天遇到使用 SortedList 時產生例外, 抱怨 key 相同, 這時我才注意到, 原來 SortedList 不能存放相同 key 的物件。不過其實嚴格來說, 並不是 key 相同就不能存放, 而是預設的比較器是很正規的比較, 當兩個比較對象相同時, 就會傳回 0, 而 SortedList 就會抱怨 key 相同, 產生例外。

根據上述, 解決方案其實很簡單, 就是自己實作一個只會傳回 1 與 -1 的比較器, 在建構 SortedList 時傳入, 這樣即使 key 相同也可以存入。比較器的實作非常簡單, 可參考這一篇討論串中一樓的解答


class MyComparer : IComparer
{

  public int Compare(int x, int y)
  {
    if (x < y)
      return -1;
    else return 1;
  }
}
非常簡單。

星期三, 12月 05, 2012

修改 Visual Studio 專案檔的儲存資料夾

我因為常常製作一些功能相近的小程式, 所以都會拿現有的專案複製之後修改, 不過這樣一來, 會遺留許多就專案的痕跡, 自己看了也很不舒服。其中, 有許多設定, 像是專案名稱、組件名稱、命名空間等等都可以在 Visual Studio 裡頭直接修改, 只有儲存的資料夾必須自己手動修改。

對於專案最外層的資料夾, 也就是儲存有 .sln 檔的資料夾, 可以隨意更改名稱, 但是裡層的資料夾 (預設與外層同名), 就必須在修改名稱之後, 再以文字編輯器開啟 .sln 檔, 將其中的資料夾對應到新的名稱才行。例如我有一個叫做 WinTCPTest 的專案:


若想更改紅色框的資料夾名稱, 就要使用文字編輯器修改 WinTcpTest.sln 檔:

只要將 Project 段落中的資料夾名稱改為新的資料夾即可。

星期三, 11月 14, 2012

在 Windows Forms 程式中取得組建檔的版本編號

剛剛想要在視窗的標題列顯示程式的版本號碼 (設定在組建檔的版本編號), 找了許久, 最簡單的應該就是從這裡看到的解答:
this.GetType().Assembly.GetName().Version.ToString ();
當然, 從 GetName() 傳回的物件還可以取得其他與組件檔案相關的資訊可供使用, 需要的可以自己看一下文件囉。

星期四, 11月 24, 2011

修改 .NET 程式的版本

由於工作的關係, 常會用 C# 寫點小工具給同事使用, 修改多次後, 版本就亂了, 同事也很難分辨手上的程式到底是哪一個版本?還好, 在 application version (major and minor) c# winform 這一個問答中找到, 原來只要開啟專案中 Properties 下的 AssemblyInfo.cs 檔案, 即可修改版本編號了, 真是學藝不精。

補充:感謝網友提醒, 其實應該是在「專案/屬性/應用程式/組件資訊」這裡改會更方便才對!