2010-07-11 73 views
0

我的C#代碼有很多像「this.Name = ...」這樣的語句。爲了讓我的代碼整潔,我讓文本編輯器代替所有「這個」。到無所事事。該代碼仍然有效。但後來我資助它給我帶來了很多新的麻煩爲我寫了一些語句,如:如何查找可疑語句,如「Name = Name;」在C#中由Regex?

this.Name = Name; // the second Name is a parameter. 

更換後,它變成了:

Name = Name; 

現在,我遇到了太多的代碼。如何查找可疑代碼,如「Name = Name」;通過正則表達式在VS 2010?

感謝,

+2

您是否考慮過對本地變量,參數,字段和屬性不使用相同的命名約定? – 2010-07-11 09:43:51

+0

我會按照你的建議。 謝謝, Ying – Ying 2010-07-11 13:08:44

回答

7

你爲什麼要使用正則表達式時,你可以簡單地編譯解決方案,並尋找CS1717 warning:以相同的變量作出

分配; 你的意思是指定別的東西?

另請注意,在C#中,您的參數以小寫字母開頭是一個很好的約定。

+0

編譯器發現我偶然的錯誤。 謝謝。 Ying – Ying 2010-07-11 13:07:45

+0

僅當變量分配給自己時纔會激活CS1717警告。如果'this.Name'是一個類屬性,那麼編譯器不會發出任何警告。如果您需要類似的屬性,請參閱其他問題:http:// stackoverflow。35633116#35633116 – 2016-03-01 15:18:43

5

我同意達林的方法更強大,應該先完成。不過,您可能會注意到使用此方法會遺漏的代碼段。

嘗試找到那些可以使用「在文件中查找」的文件。在查找框中打勾「使用規則expresssions」和(由括號包圍「標記」表達)

  • :Wh*零個或多個空格字符
  • \1回參考輸入{:i}:Wh*=:Wh*\1

    • :i空調風格標識符標籤標識發現

    這種方法可能帶回一些誤報,所以你可以嘗試:Wh+{:i}:Wh*=:Wh*\1:Wh+如果有太多,但在錯過了一些比賽的風險(例如。結束註釋標記緊接在賦值語句之後)

  • +0

    你不需要捕捉那個,或者不需要'{:i}''魔術是爲你做的嗎? (如果是這樣做的捲翹,這是一個非常*不同於我用過的RE方言...) – 2010-07-11 09:39:54

    +0

    更改':Wh +'到':Wh *'因爲可能沒有空白區域... – fbstj 2010-07-11 09:40:38

    +0

    @Falling - 好點。完成。 @唐納 - 是的。 Visual Studio IDE使用了一些奇怪的正則表達式! – 2010-07-11 09:45:11

    1

    如果自從以後沒有更改太多,則可以從CVS恢復上次提交。

    做你所問的問題是,可能有其他情況下,「這個」不應該被替換,你還沒有看到問題。

    +0

    +1,關於從源代碼管理恢復的極好建議。 – 2010-07-11 09:58:37

    相關問題