C#到VB的转换问题
您好,我正在尝试将一些代码从C#转换为VB,但由于缺乏C#(或者VB)知识,我遇到了一些问题。我希望有更熟练的人能纠正我的错误 我在这里使用转换工具: 要转换此处的某些代码,请执行以下操作: 该代码旨在制作EF实体的深度副本 在第87行更正&&后,转换完成OK。之后进行了一些导入并修复了一些简单错误,我无法解决的其余错误如下: 1:线路C#到VB的转换问题,c#,vb.net,c#-to-vb.net,C#,Vb.net,C# To Vb.net,您好,我正在尝试将一些代码从C#转换为VB,但由于缺乏C#(或者VB)知识,我遇到了一些问题。我希望有更熟练的人能纠正我的错误 我在这里使用转换工具: 要转换此处的某些代码,请执行以下操作: 该代码旨在制作EF实体的深度副本 在第87行更正&&后,转换完成OK。之后进行了一些导入并修复了一些简单错误,我无法解决的其余错误如下: 1:线路 <System.Runtime.CompilerServices.Extension()> _ Public Shared Functio
<System.Runtime.CompilerServices.Extension()> _
Public Shared Function Clone(entityObject As EntityObject) As EntityObject
Private Shared ReadOnly _tracking As New List()
“as var”部分标记为未定义;我不完全确定“as var”是什么意思,我可以删除它并允许编译器推断类型吗
3:这行代码中有一个错误:
Dim t = GetType(EntityCollection(Of )).MakeGenericType(New () {[property].PropertyType.GetGenericArguments()(0)})
在“New”后面的“(“New”表示预期的类型,我不知道该如何理解这条线,因此如何修复它,有人能澄清一下吗
4:那条线
<System.Runtime.CompilerServices.Extension()> _
Public Shared Function Clone(entityObject As EntityObject) As EntityObject
Private Shared ReadOnly _tracking As New List()
通知我System.Collections.Generic.List(Of T)的类型参数太少。这是因为C#和VB之间存在一些差异吗
非常感谢你的建议
var
表示编译器推断类型newlist(string)
static
类中声明的。出于兼容性原因,这些在VB.NET中称为“模块”。它们的工作方式完全相同;相信编译器的建议,并将扩展方法移到模块中声明为var
是一种方法。VB.NET中的等效方法是在项目的属性中启用选项Infer
。您需要删除作为var
声明,然后编译器将自动推断变量的类型,就像在C#中一样New
并更改声明数组的方式:
Dim t = GetType(EntityCollection(Of )).MakeGenericType([property].PropertyType.GetGenericArguments()(0))
列表(Of T)
类,但未能指定要使用的类型。例如,您的代码应如下所示:
Private Shared ReadOnly _tracking As New List(Of Integer)
MakeGenericType
方法需要一个变量数组Type
。您可以使用Dim t=GetType(EntityCollection(of)).MakeGenericType([property].PropertyType.GetGenericArguments()(0))
对于#4,我也无法想象它是如何在C语言中编译的。然而,从完整的源代码看,它似乎是
Private Shared ReadOnly(私有共享只读#跟踪)的新列表(自引用跟踪)
是正确的。感谢您的回复。我在我的原始帖子中提供了C#source的完整链接,又在这里:它是180行长的主要代码块。我必须出去,但一回来就会查看您的建议。非常感谢这些答案,这帮助我完整地编译了代码。非常感谢谢谢。谢谢你的回复。我回来后会给你反馈。再次感谢你的评论,代码现在已经编译好了。@TripleAntigen:我找到了原件(我想我得到了你的答案——请看我的编辑),但您应该发布有问题的确切行。您不能期望我们在没有给出提示的情况下筛选数百行代码。太好了,两个建议都很有帮助。再次感谢。