【问题标题】:c# to vb.net convsersionc#到vb.net的转换
【发布时间】:2012-12-10 15:37:22
【问题描述】:

我正在尝试将 c# 块转换为 vb。

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

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

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

这是 vb.net 的 c#。

我不确定“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}));

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

【问题讨论】:

    标签: c# asp.net .net vb.net c#-to-vb.net


    【解决方案1】:

    删除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/

    【讨论】:

    • 只需使用Select 而不是[Select]
    • 问题是Key 的意义是什么,你根本没有解释。 -1.
    • @pseudocoder - ...sheesh ...谢谢...虽然我猜我的答案上有绿色的大勾号,但 OP 对我的答案非常满意。其他人解释了key,但没有给出代码的工作示例。你也想跑过去给他投反对票吗?
    • @Darren 不要把它当成个人。您的答案在技术上是正确的,我只是认为它没有用,因为您从未解释过为什么您认为您的示例是最佳答案。发布问题的用户可能对解释不感兴趣(只是一个答案),但您可以打赌,将来查看此 QA 的人会想要一个解释。
    • @pseudocoder - 不要把它当作个人。只是不要认为它值得实际投反对票,尽管这取决于您和这里的所有其他用户。通过拒绝投票,您实际上是在说答案是错误的或无益的。就像我说的,这取决于你和其他人。
    【解决方案2】:

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

    VB.NET 做了类似的事情,但它要求您将 Key modifier 放在匿名类型的属性上。

    C#“只是做它”,其中 VB.NET 让您可以灵活地定义在相等中使用哪些属性。由于 C# 使用了所有属性,因此转换器会在所有内容上为您提供Key,因此相等的工作原理相同。

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

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

    【讨论】:

    • 这是最好的答案,因为它实际上解释了转换问题和问题所属的语言元素。
    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多