2010-01-08 59 views
2

有什麼辦法可以在編譯時檢查格式字符串嗎?格式字符串 - 編譯時檢查

實施例:

Console.WriteLine("{0} is a really {1} site", "stackoverflow.com", "cool");//this will run 

//這會得到爲僅提供一個參數

Console.WriteLine("{0} is a really {1} site", "stackoverflow.com"); 

Exception:"Index (zero based) must be greater than or equal to zero and less than the size of the argument list." 

並且如果格式字符串不正確的格式(即,缺少「}」的異常之後1)

Console.WriteLine("{0} is a really {1 site", "stackoverflow.com","cool"); 

Exception: Input string was not in a correct format. 

回答

4

不,你不能在這裏爲編譯時驗證。這是資源字符串和格式化字符串的一個缺陷。你可以做一些事情來緩解你的問題。

  1. 徹底地單元測試您的公共接口,以確信您的字符串格式正確。
  2. 等工具ReSharper可以進行靜態分析,讓你知道了這些問題,你運行你的應用程序之前。
  3. 事情要好三分。
2

不,沒有辦法做到這一點。單元測試解決了這個問題。

2

雖然不是真正的編譯時檢查,ReSharper可以提醒你在Visual Studio中,當參數的數目是錯誤的或格式字符串格式錯誤。