我试图在VB.net中获取指向函数的指针(如在C ++中)并将其添加到稍后要调用的字典中。我不知道如何在VB中执行此操作,但我知道它可以使用void *在C ++中轻松完成。我真的想避免使用非常大的var itemurl = "https://.../Json/Items/";
var token = "<your token here>";
$.ajax({
type: "GET",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(token));
},
url: itemurl,
dataType: 'json',
async: false,
success: function(data, textStatus) { // your actions here }, error:
function (xhr, testStatus, errorThrown) { // } });
或Select Case
语句来拥有8000个全局变量,例如nextTime_RunSub1,nextTime_RunSub2等。
例如:
If
答案 0 :(得分:1)
这项工作(两种格式)。因此,如果它们都是没有参数的相同类型的函数,你可以将你的调用包装在统一的返回中,或者只是执行addressOf。
这不完全是你的代码(我知道......我知道)。但是为您提供Lambda函数字典的快速示例。它是vb.net。
Option Strict On
Module Module1
Sub Main()
Dim getters As New Dictionary(Of String, Func(Of Boolean))
getters.Add("First", New Func(Of Boolean)(Function()
Console.WriteLine("Test Run")
Return true
End Function))
getters.Add("Second", AddressOf TestMe)
For each el In getters.Values
el()
Next
End Sub
Public function TestMe() As boolean
Console.WriteLine("Test Run")
Return true
End function
End Module
Dictionary(of Action,Single)也有效......
我想你也可以在没有return参数的情况下做到(vb.net相当于void function()
是Sub()
,它是Action类型的对象,如下所示)。
Module Module1
Sub Main()
Dim getters As New Dictionary(Of String, Action)
getters.Add("First", New Action(sub()
TestMe()
End sub))
getters.Add("Second", AddressOf TestMe2)
For each el In getters.Values
el()
Next
End Sub
Public Sub TestMe2()
Console.WriteLine("Test Run")
End Sub
Public function TestMe() As boolean
Console.WriteLine("Test Run")
Return true
End function
End Module