このジェネリック関数はどのように機能していますか?

好奇心旺盛

次の形式の関数呼び出しが表示された場合:

Dim i as Integer = getAnInteger("I am groot")

の署名はgetAnInteger次のようなものなければならないことがわかります

Function getAnInteger(inp As String) As Integer

今、私はこの電話をかけています:

Property Name As String
    Get
        Return _name
    End Get
    Set(ByVal value as String)
        _name = value
        doSomething(Function() Name)  '<---- this one
    End Set
End Property

doSomethingはそれが次のように定義されているに違いないと考えました

Sub doSomething(ByVal fnName As Func(Of String))
                     '
                     ' or
                     '
Sub doSomething(Of T)(ByVal fnName As Func(Of T)) '....................(1)

私はそれが

Sub doSomething(Of T)(ByVal fnName As Expression(Of Func(Of T))) '.....(2)

質問

両方を来るどのようにFunc(Of T)してExpression(Of Func(Of T))引数受け入れることができ、String型のプロパティです。また、中にある名前空間。したがって、引数はlinq式である必要があります。しかし、Linqはありません!それは財産への明白な委任です。では、これはどのように機能していますか?Function() NameNameExpressionLinqFunction() NameName

MarcinJuraszek

Expression(Of T) はコンパイラが知っている特別な型であり、そこに魔法があります。

ラムダ式(前述のようなFunction() Name)をデリゲート型(例Func(Of String))に割り当てると、コンパイラーは実行可能コードを生成しますが、同じラムダ式を割り当てると、コードを表すツリー構造でExpression(Of Func(Of String))ある式ツリーが生成されます。

これは主にクエリプロバイダーに役立ちます。たとえば、Entity Frameworkはこれを使用して、データベースに対して実行できる適切なSQLコードを生成します。

あなたは、変換することができますExpression(Of Func(Of String))Func(Of String)呼び出すことにより、実行時にCompileメソッドを。変換Func(Of String)には、Expression(Of Func(String))私の知る限り、可能ではないまで、です。Expressionクラスメソッドを使用して手動でツリーを作成できますが、デリゲートを渡すだけで自動的にツリーを作成することはできません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ジェネリックのこの暗黙の宣言はJavaでどのように機能しますか?

分類Dev

ジェネリックのジェネリックはどのように機能しますか?

分類Dev

C#ジェネリックはどのように機能しますか?

分類Dev

ユーザー定義のS3グループジェネリック関数はRでどのように機能しますか?

分類Dev

この関数をジェネリック型にするにはどうすればよいですか?

分類Dev

この例では、Swiftのジェネリック制約が一貫して機能していないように見えるのはなぜですか?

分類Dev

JDK 8の型推論はジェネリックでどのように機能しますか?

分類Dev

ジェネリック型はscalaの継承でどのように機能しますか?

分類Dev

Java:ジェネリックメソッドはどのように機能しますか?

分類Dev

ジェネリックラムダはC ++ 14でどのように機能しますか?

分類Dev

keyof typeofジェネリック制約はどのように機能しますか?

分類Dev

キャスティングとジェネリックはどのように機能しますか?

分類Dev

ネストされたリストに対してジェネリックはどのように機能しますか

分類Dev

状態フックを使用する場合、reactのuseState()はどのようにして機能コンポーネントの正しい状態オブジェクトと関数を取得しますか?

分類Dev

このオブジェクトメソッド定義は、「関数」キーワードなしでどのように機能しますか?

分類Dev

このポップ関数はどのように機能しますか?

分類Dev

Scalaのすべての数値で関数をジェネリックとして定義するにはどうすればよいですか?

分類Dev

このJavaジェネリックコードを正しく機能させるにはどうすればよいですか?

分類Dev

ジェネレーター関数は内部でどのように機能しますか?

分類Dev

特定のクラス階層に対してのみジェネリック関数を作成するにはどうすればよいですか?

分類Dev

Typescript:なぜこの些細なジェネリック関数が非ジェネリック等価関数のように動作しないのですか?

分類Dev

複数のチャネルが関与している場合、selectはどのように機能しますか?

分類Dev

Springのジェネリック型に基づく自動配線。どのように機能しますか?

分類Dev

このコールバック関数の例はどのように機能しますか?

分類Dev

このジェネリッククラスを変更して、メインメソッドが機能するようにするにはどうすればよいですか?

分類Dev

このhrefjavascriptロジックはどのように機能しますか?

分類Dev

Scalaの陰関数。これはどのように機能していますか?

分類Dev

Qtの「関数/メソッド」でのスタックへのオブジェクトの作成はどのように機能しますか?

分類Dev

ジェネリック型パラメーターを使用して関数のベクトルを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    ジェネリックのこの暗黙の宣言はJavaでどのように機能しますか?

  2. 2

    ジェネリックのジェネリックはどのように機能しますか?

  3. 3

    C#ジェネリックはどのように機能しますか?

  4. 4

    ユーザー定義のS3グループジェネリック関数はRでどのように機能しますか?

  5. 5

    この関数をジェネリック型にするにはどうすればよいですか?

  6. 6

    この例では、Swiftのジェネリック制約が一貫して機能していないように見えるのはなぜですか?

  7. 7

    JDK 8の型推論はジェネリックでどのように機能しますか?

  8. 8

    ジェネリック型はscalaの継承でどのように機能しますか?

  9. 9

    Java:ジェネリックメソッドはどのように機能しますか?

  10. 10

    ジェネリックラムダはC ++ 14でどのように機能しますか?

  11. 11

    keyof typeofジェネリック制約はどのように機能しますか?

  12. 12

    キャスティングとジェネリックはどのように機能しますか?

  13. 13

    ネストされたリストに対してジェネリックはどのように機能しますか

  14. 14

    状態フックを使用する場合、reactのuseState()はどのようにして機能コンポーネントの正しい状態オブジェクトと関数を取得しますか?

  15. 15

    このオブジェクトメソッド定義は、「関数」キーワードなしでどのように機能しますか?

  16. 16

    このポップ関数はどのように機能しますか?

  17. 17

    Scalaのすべての数値で関数をジェネリックとして定義するにはどうすればよいですか?

  18. 18

    このJavaジェネリックコードを正しく機能させるにはどうすればよいですか?

  19. 19

    ジェネレーター関数は内部でどのように機能しますか?

  20. 20

    特定のクラス階層に対してのみジェネリック関数を作成するにはどうすればよいですか?

  21. 21

    Typescript:なぜこの些細なジェネリック関数が非ジェネリック等価関数のように動作しないのですか?

  22. 22

    複数のチャネルが関与している場合、selectはどのように機能しますか?

  23. 23

    Springのジェネリック型に基づく自動配線。どのように機能しますか?

  24. 24

    このコールバック関数の例はどのように機能しますか?

  25. 25

    このジェネリッククラスを変更して、メインメソッドが機能するようにするにはどうすればよいですか?

  26. 26

    このhrefjavascriptロジックはどのように機能しますか?

  27. 27

    Scalaの陰関数。これはどのように機能していますか?

  28. 28

    Qtの「関数/メソッド」でのスタックへのオブジェクトの作成はどのように機能しますか?

  29. 29

    ジェネリック型パラメーターを使用して関数のベクトルを作成するにはどうすればよいですか?

ホットタグ

アーカイブ