c#to vb.net convsersion

Sky*_*ell 6 .net c# vb.net asp.net c#-to-vb.net

我试图将一个c#块转换为vb.

我使用developerfusion.com上的服务进行转换,但是当我将其粘贴到Visual Studio中时,它会抱怨"Key"语句("在对象初始化程序中初始化的字段或属性的名称必须以'.'开头. ").

我玩了几个小时的代码试图解决这个问题,但我所做的一切只会导致更多的错误.

所以我开始怀疑developerfusion的转换是否正确.

这是v #.net的c#.

我不确定"钥匙"来自哪里,并且想知道是否有人可以启发我.

谢谢!

var combinedResults  = 
cars.Select(c=>new carTruckCombo{ID=c.ID,make=c.make,model=c.model})
.Union(tracks.Select(t=>new carTruckCombo{ID=t.ID,make=t.make,model=t.model}));
Run Code Online (Sandbox Code Playgroud)

Dim combinedResults = cars.[Select](Function(c) New carTruckCombo() With { _
Key .ID = c.ID, _
Key .make = c.make, _
Key .model = c.model _
}).Union(tracks.[Select](Function(t) New carTruckCombo() With { _
Key .ID = t.ID, _
Key .make = t.make, _
Key .model = t.model _
}))
Run Code Online (Sandbox Code Playgroud)

Dar*_*ght 7

除掉 Key

改为:

    Dim combinedResults = cars.Select(Function(c) New carTruckCombo() With { _
    .ID = c.ID, _
        .make = c.make, _
        .model = c.model _
     }).Union(tracks.Select(Function(t) New carTruckCombo() With { _
        .ID = t.ID, _
        .make = t.make, _
        .model = t.model _
     }))
Run Code Online (Sandbox Code Playgroud)

作为旁注,这个转换器总是在我需要的时候对我更好:

http://converter.telerik.com/

  • 只需使用`Select`而不是`[Select]`. (2认同)

vcs*_*nes 5

在C#中,创建匿名类型时,它会使用匿名类型的所有属性为您生成EqualsGetHashCode实现.

VB.NET做了类似的事情,但它要求你将Key修饰符放在匿名类型的属性上.

C#"就是这样",VB.NET使您可以灵活地定义相等使用的属性.由于C#使用了所有属性,因此转换器会为您Key提供所有内容,因此相同的工作方式相同.

好的,这是Key修饰符的背景故事,那么你的转换有什么问题?

转换器似乎错误地假设您使用的是匿名类型,但事实并非如此.你的类型是carTruckCombo这样的,它们的Key修饰符不起作用.删除Key修饰符可以解决问题,因为你有一个定义良好的类,你可以在那里实现你的相等.

  • 很好的解释. (2认同)