大家好抱歉,但你必须一直得到这个,我试图搜索它,但找不到任何具体到我要找的东西。
基本上我完全了解VB.NET并且我经常使用它,我想要进入的是C#所以我决定利用我的空闲时间来试图抓住它。我这样做是通过使用我的一个旧的VB.NET自定义二进制对象并手动转换(不是真的使用转换器,因为我想学习它而不仅仅是转换它。)然而,我使用互联网来指导我。到目前为止,我正在尝试创建自定义甚至处理程序,我以前的VB.NET代码如下;
Public Event BeforeExecution_Handler()
但是在C#中这样做似乎有点棘手,我做了以下
public event BeforeExecution_HandlerEvent BeforeExecution_Handler;
public delegate void BeforeExecution_HandlerEvent();
首先,这是正确的,但其次是这里发生了什么,为什么我必须为它创建两次定义。我猜测委托部分是放置变量的地方,但为什么会这样。有人可以解释
答案 0 :(得分:5)
在VB.NET中你可以隐式地创建一个委托,所以你可以这样做:
声明:
function delSel(){
var vehicles = @Html.Raw(Json.Encode(Model.Vehicles));
var selIDs = "";
for(var i = 0; i < vehicles.length; i ++)
{
if (document.getElementById('checkbx_' + i).checked) {
selIDs = selIDs + vehicles[i].ID + ",";
}
}
document.getElementById('CRVehicleIDs').value = selIDs;
}
调用:
Public Event MsgArrivedEvent(ByVal message As String) 'behind the scenes a delegate is created for you
在C#中,您 以使用委托。
声明:
RaiseEvent MsgArrived("foo")
调用:
public delegate void MsgArrivedEventHandler(string message);
public event MsgArrivedEventHandler MsgArrivedEvent;
请注意,你也可以用与C#相同的方式显式地在VB.NET中创建一个委托,但这只是更多的输入,实际上没有任何收获:
声明:
MsgArrivedEvent("Test message");
调用:
Public Delegate Sub MsgArrivedEventHandler(ByVal message As String)
Public Event MsgArrivedEvent As MsgArrivedEventHandler
另请注意,最佳做法实际上是使用RaiseEvent MsgArrivedEvent("foo")
和sender
类(或从其继承的类)作为Event / Delegate的参数:
EventArgs