1
我有被宣佈像這樣的方法:正則表達式將委託語法更改爲Lambda表達式?
public ButtonObject CreateStandardButton(type1 arg1, type2 arg2,
ItemClickEventHandler eventHandler, type3 arg3, type4 arg4)
ItemClickEventHandler具有通常的(發送者,E)的參數。但是,我們從來沒有最終使用的(發件人,E)的參數,所以我們有這樣一串電話:
myButton = CreateStandardButton(myArg1, myArg2,
(sender, e) => MyButtonClick(), myArg3, myArg4);
和,因爲這個項目升級爲.NET 3.5通過的方式約15% ,許多人呼籲這樣的:
myButton = CreateStandardButton(myArg1, myArg2,
delegate { MyButtonClick(); }, myArg3, myArg4);
我們把這種方法有很多,所以它是真煩人不得不一遍又一遍地添加拉姆達未使用參數。因此,我想改變這一切慣例這個過載:
public ButtonObject CreateStandardButton(type1 arg1, type2 arg2,
Action eventHandler, type3 arg3, type4 arg4)
這使我們能夠做到這一點,而不是:
myButton = CreateStandardButton(myArg1, myArg2,
MyButtonClick, myArg3, myArg4);
的問題是,舊的委託語法的用法將需要強制轉換爲(Action)
,因爲它們對編譯器不明確。所以,爲了消除煩惱,我想要做一個查找和替換,大概是用正則表達式。
這樣做的正則表達式是什麼?
我不認爲他需要匹配完整的代表表達式。他實際上只需要匹配`delegate`關鍵字本身,大括號中的部分可以保持原樣(它將成爲語句lambda)。 – 2009-07-31 03:41:00