十一月 13

什麼是擴充方法(Extension Method)呢?

簡單的說就是可以讓你自已擴充用的東西(有說跟沒說一樣…..)

不用把擴充方法想的太難,它其實也是很平易近人的

在寫程式的時候,在字串的後面點(.)下去,會跑出一堆方法讓你使用,最常見的就是ToString()

那麼我們要如何自行設計一個屬於自己的方法呢(結果如下圖)?其實不難

20091113_1

下程的範例程式(專案打包點我下載),研究一下應該就可以懂了

首先撰寫要自訂擴充的方法 ModuleExt.vb

這邊需要注意的地方,在於傳入的參數型態

如果傳入的參數型態是Integer,那麼只有型態是Integer的點下去才會出這個自訂的Method

如果想要任何型態點下去,都會帶出現我們自定的Method,

那麼就把型態定為Object就可以了(如本例的AddString)

Imports System.Runtime.CompilerServices

Namespace ExtensionMethods
    Module OtherExtensions

        '''
''' 英文字首轉大寫
        '''
        <Extension()> _
        Public Function ToUpperFirstWord(ByVal src As String) As String
            If src.Length >= 1 Then
                Dim FirstWord As String = src.Substring(0, 1).ToUpper
                src = src.Remove(0, 1).Insert(0, FirstWord)
            End If
            Return src
        End Function

        <Extension()> _
        Public Function ToPerCent(ByVal src As Double) As String
            Return src * 100 & "%"
        End Function

        <Extension()> _
        Public Function AddString(ByVal src As Object) As String
            Return src & " New AddString"
        End Function

    End Module
End Namespace

接下來則是在要使用的程式頁面引用之前所寫的Extension

Imports ConsoleApplicationTEST.ExtensionMethods.OtherExtensions

Module Module1

    Sub Main()
        Dim test As String = "abcd"
        'Output: Abcd
        Console.WriteLine(test.ToUpperFirstWord)
        'Output: abcd New AddString
        Console.WriteLine(test.AddString)
        'Output: Abcd New AddString
        Console.WriteLine(test.ToUpperFirstWord.AddString)

        'Output: 50%
        Dim testint As Double = 0.5
        Console.WriteLine(testint.ToPerCent)

        Console.ReadLine()
    End Sub

End Module

相關文章:
何謂擴充方法 (Extension method )?
C# 3.0 初體驗:Extension Method
[C#] 3.0 中的新功能 – 擴充方法(Extension Method)