在将C#代码翻译成Vb.net时没有什么帮助

在将C#代码翻译成Vb.net时没有什么帮助,c#,vb.net,translation,C#,Vb.net,Translation,我在我的项目中使用了一个自定义listview控件,这是我在code项目中找到的。此控件具有用于将图像设置为列的ImageGetter属性。作者提供了使用它的示例,但它是用C#编写的。我尝试使用在线转换器,但他们都无法翻译代码,而且该代码的作者也没有回答提供VB.net代码的问题。所以我需要有人翻译下面的代码到VB.Net this.olvColumn18.ImageGetter = delegate(object row) { if ("AEIOU".

我在我的项目中使用了一个自定义listview控件,这是我在code项目中找到的。此控件具有用于将图像设置为列的ImageGetter属性。作者提供了使用它的示例,但它是用C#编写的。我尝试使用在线转换器,但他们都无法翻译代码,而且该代码的作者也没有回答提供VB.net代码的问题。所以我需要有人翻译下面的代码到VB.Net

        this.olvColumn18.ImageGetter = delegate(object row) {
             if ("AEIOU".Contains(((Person)row).Name.Substring(0, 1)))
                return 0; 
            else if (((Person)row).Name.CompareTo("N") < 0)
                return 1; 
            else
                return 2; 
        };
this.olvColumn18.ImageGetter=委托(对象行){
if(“AEIOU.”包含(((Person)行).Name.Substring(0,1)))
返回0;
else if(((个人)行).Name.CompareTo(“N”)<0)
返回1;
其他的
返回2;
};
另外我想问一下什么是代表?这是函数还是别的什么。 这里是控制链接


这里有一个通用的解决方案:在调试模式下编译代码,然后使用Reflector之类的工具将其反编译为另一种语言。这就是.NET的魅力所在。

这里有一个通用的解决方案:在调试模式下编译代码,然后使用类似Reflector的工具将其反编译为另一种语言。这就是.NET的魅力所在。

您不必使用匿名代理。您只需创建一个函数并使用
AddressOf
,如本文所示

Private Function PersonColumnImageGetter(object rowObject) As Object
    Dim p As Person = DirectCast(rowObject, Person)
    If "AEIOU".Contains(p.Name.Substring(0, 1)) Then
        Return 0
    Else If p.Name.CompareTo("N") < 0 Then
        Return 1
    Else
        Return 2
    End If
End Function
或者,如果要使用匿名委托:

Me.personColumn.ImageGetter =  Function (object rowObject) As Object
                                   Dim p As Person = DirectCast(rowObject, Person)
                                   If "AEIOU".Contains(p.Name.Substring(0, 1)) Then
                                       Return 0
                                   Else If p.Name.CompareTo("N") < 0 Then
                                       Return 1
                                   Else
                                       Return 2
                                   End If
                               End Function
Me.personColumn.ImageGetter=函数(对象行对象)作为对象
Dim p As Person=DirectCast(rowObject,Person)
如果“AEIOU.”包含(p.Name.Substring(0,1)),则
返回0
否则,如果p.Name.CompareTo(“N”)<0,则
返回1
其他的
返回2
如果结束
端函数

我建议您阅读VB.NET文档(如果需要,还可以阅读C#文档)如何编写东西。MSDN上的代码示例通常有两种语言,因此学习这两种语法非常容易。

您不必使用匿名委托。您只需创建一个函数并使用
AddressOf
,如本文所示

Private Function PersonColumnImageGetter(object rowObject) As Object
    Dim p As Person = DirectCast(rowObject, Person)
    If "AEIOU".Contains(p.Name.Substring(0, 1)) Then
        Return 0
    Else If p.Name.CompareTo("N") < 0 Then
        Return 1
    Else
        Return 2
    End If
End Function
或者,如果要使用匿名委托:

Me.personColumn.ImageGetter =  Function (object rowObject) As Object
                                   Dim p As Person = DirectCast(rowObject, Person)
                                   If "AEIOU".Contains(p.Name.Substring(0, 1)) Then
                                       Return 0
                                   Else If p.Name.CompareTo("N") < 0 Then
                                       Return 1
                                   Else
                                       Return 2
                                   End If
                               End Function
Me.personColumn.ImageGetter=函数(对象行对象)作为对象
Dim p As Person=DirectCast(rowObject,Person)
如果“AEIOU.”包含(p.Name.Substring(0,1)),则
返回0
否则,如果p.Name.CompareTo(“N”)<0,则
返回1
其他的
返回2
如果结束
端函数
我建议您阅读VB.NET文档(如果需要,还可以阅读C#文档)如何编写东西。MSDN上的代码示例通常有两种语言,因此学习这两种语法非常容易。

C#或VB或两者的基础知识。很抱歉,要么做,要么不做。C#或VB的基础知识,或者两者兼而有之。很抱歉,你要么做,要么离开。