C#转VB.NET转换

6
我正在尝试将一段c#代码转换成vb。我使用developerfusion.com上的服务进行转换,但是当我将转换后的代码粘贴到Visual Studio时,它会抱怨“Key”语句(“在对象初始化程序中初始化的字段或属性的名称必须以'.'开头”)。
我花了几个小时玩弄代码,试图绕过这个问题,但我所做的一切都只导致更多的错误。
因此,我开始怀疑developerfusion的转换是否正确。
以下是c#到vb.net的代码。
我不确定“Key”来自何处,想知道有人能否启示我。
谢谢!
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}));

To

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 _
}))
2个回答

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 _
     }))

作为一则附注,每当我需要时,这个转换器总是更好地工作:

http://converter.telerik.com/


2
只需使用 Select 而不是 [Select] - sloth
问题是Key的意义是什么,而你根本没有解释。-1。 - pseudocoder
@pseudocoder - ...天啊...谢谢...虽然我猜测由于我的回答上有一个大绿色的勾,OP对我的回答应该是非常满意的。还有其他人解释了“key”,但没有给出代码的工作示例。你会去找他并给他点踩吗? - Darren Wainwright
@Darren 不要太在意。你的答案在技术上是正确的,但我认为它并不实用,因为你从未解释过为什么你觉得你的例子是最好的答案。提问者可能对解释不感兴趣(只想要答案),但你可以肯定的是,将来查看这个问题和答案的人会想要一个解释。 - pseudocoder
@pseudocoder - 不是针对你个人。只是认为这并不值得实际的负评,尽管这取决于你和其他用户。通过负面评价,您基本上在说答案要么是错误的,要么没有帮助。不过,就像我说的那样,这取决于你和其他所有人。 - Darren Wainwright
此外,还有一个非常好的转换器,可以双向转换(还包括 Ruby 和 Python):http://www.developerfusion.com/tools/convert/csharp-to-vb/。 - Nikita Silverstruk

5
在C#中创建匿名类型时,它会使用所有属性为您生成EqualsGetHashCode实现。
VB.NET也有类似的功能,但需要您在匿名类型的属性上放置Key修饰符
C#“只是这样做”,而VB.NET允许您定义哪些属性用于相等。由于C#使用所有属性,因此转换器会在所有内容上都加上Key以使相等性工作相同。
好的,这就是Key修饰符的背景故事,那么你的转换有什么问题呢?
转换器似乎错误地假设您正在使用匿名类型,但实际上不是。您的类型是carTruckCombo,因此Key修饰符不起作用。如果删除Key修饰符,则可以解决问题,因为您有一个明确定义的类,在那里可以实现相等性。

1
这是最佳答案,因为它实际上解释了转换问题和与问题相关的语言元素。 - pseudocoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接