在一些C#代碼中常??梢钥吹?span id="iwvjtn8m0" class="Apple-converted-space">
這樣的代碼在很多Open Source項目中是很經??吹降?比如Cecil,其共同特點是:某種特定類型的Collection+該Collection特殊的操作,在一個項目中可能充斥著數十個類似的Collection,類似的代碼在Java中很難被重構,但是在C#中,卻可以借助擴展方法與范型進行代碼的精減。
首先創建范型的Collection,該例子可以用List<T>來代替,但作為例子,我們假設該List<T>是特殊的(可能有一些delegate)
Java代碼
對于Car和Pet的特殊操作,我們通過擴展方法來實現
通過這樣的方式,我們就實現了重構,兩個Collection實現了求同存異。在我重構的Cecil之后,編譯后的Assemly大小減小了一半.
新聞熱點
疑難解答