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)
除掉 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)
作为旁注,这个转换器总是在我需要的时候对我更好:
在C#中,创建匿名类型时,它会使用匿名类型的所有属性为您生成Equals和GetHashCode实现.
VB.NET做了类似的事情,但它要求你将Key修饰符放在匿名类型的属性上.
C#"就是这样",VB.NET使您可以灵活地定义相等使用的属性.由于C#使用了所有属性,因此转换器会为您Key提供所有内容,因此相同的工作方式相同.
好的,这是Key修饰符的背景故事,那么你的转换有什么问题?
转换器似乎错误地假设您使用的是匿名类型,但事实并非如此.你的类型是carTruckCombo这样的,它们的Key修饰符不起作用.删除Key修饰符可以解决问题,因为你有一个定义良好的类,你可以在那里实现你的相等.
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |