This.Task()给VB得到一个错误,如何解决?

Eth*_*nHY 2 c# vb.net

对于C#代码

public Action Task { get; set; }

this.Task();
Run Code Online (Sandbox Code Playgroud)

但在VB中:

 Public Property Task() As Action
        Get
            Return m_Task
        End Get
        Set(value As Action)
            m_Task = Value
        End Set
    End Property
 Me.Task()
Run Code Online (Sandbox Code Playgroud)

不管用.如何解决这个问题?

slo*_*oth 7

使用

Me.Task()()
Run Code Online (Sandbox Code Playgroud)

代替

Me.Task()
Run Code Online (Sandbox Code Playgroud)

在VB.Net中访问属性时,您可以提供括号或省略它们

Me.Task() = Sub() Console.WriteLine("123")
Run Code Online (Sandbox Code Playgroud)

相当于

Me.Task = Sub() Console.WriteLine("123")
Run Code Online (Sandbox Code Playgroud)

因此,如果你只是写

Me.Task()
Run Code Online (Sandbox Code Playgroud)

编译器在此处假定属性访问,并期望您使用其值或分配新值.因此,您必须使用第二对括号来使用属性的值并调用委托.