DOBON.NETプログラミング道掲示板

■34400 / 親記事)  LINQの拡張メソッドの定義
  
□投稿者/ ジャッキーチュン 一般人(1回)-(2019/11/28(Thu) 09:45:00)
  • アイコン環境/言語:[VisualStudio2017 VB] 
    分類:[.NET] 

    はじめまして。

    LINQの拡張メソッドの定義で、
    <Extension()>
    Public Function Where(Of TSource)
    (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Integer, Boolean))  ←ここに()で括られた部分がある
    As IEnumerable(Of TSource)
    のようにかかれています。

    Function メッソッド名(引数)の次に()で括られたものがあり、
    その後に、As IEnumerble(Of TSource)となっています。

    ()で括られた部分は、何をするのでしょうか?
    普通は、
    Public Shared Function Format (format As String, arg0 As Object) As String
    こんな感じですよね?

    もう一つ、Formを作って、Designerを見ると
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    のように、<>で括られたものがあります。
    これは、なんですか?

    教えて貰えれば助かります。


マルチポストを報告
違反を報告
引用返信 削除キー/
■34401 / ResNo.1)  Re[1]: LINQの拡張メソッドの定義
□投稿者/ 魔界の仮面弁士 大御所(1265回)-(2019/11/28(Thu) 11:11:32)
  • アイコンNo34400に返信(ジャッキーチュンさんの記事)
    > Function メッソッド名(引数)の次に()で括られたものがあり、
    メッソッド → メソッド


    > その後に、As IEnumerble(Of TSource)となっています。
    > ()で括られた部分は、何をするのでしょうか?

    「(Of 何某)」の事なら、『型パラメーター』と呼ばれる物です。

    Dim a As System.Collections.IEnumerable
    Dim b As System.Collections.Generic.IEnumerable(Of Integer)
    Dim c As System.Collections.Generic.IEnumerable(Of String)
    Dim d As System.Collections.Generic.IEnumerable(Of Boolean)


    上記の場合、
     a.GetEnumerator().Current は As Object
     b.GetEnumerator().Current は As Integer
     c.GetEnumerator().Current は As String
     d.GetEnumerator().Current は As Boolean
    のようになります。※「IEnumerable」と「IEnumerable(Of T)」は別の型です。


    型パラメーターを受け取るクラスを「ジェネリック クラス」と呼び、
    型パラメーターを受け取るメソッドを「ジェネリック メソッド」と呼びます。
    https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/data-types/generic-types?WT.mc_id=DT-MVP-8907


    > もう一つ、Formを作って、Designerを見ると
    > <System.Diagnostics.DebuggerNonUserCode()> _
    > Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    > のように、<>で括られたものがあります。

    それは『属性』と呼ばれる物です。

    上記の場合、Dispose メソッドに対して
    System.Diagnostics.DebuggerNonUserCodeAttribute 属性クラスが
    付与されています。

    https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/concepts/attributes/?WT.mc_id=DT-MVP-8907
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -