我尝试翻译以下 C# 代码
public static class ObjectSetExtensions
{
public static void AddObjects<T>(this ObjectSet<T> objectSet, IEnumerable<T> objects)
{
foreach (var item in objects)
{
objectSet.AddObject(item);
}
}
}
到 VB.NET:
Module ObjectSetExtensions
<System.Runtime.CompilerServices.Extension()>
Public Sub AddObjects(Of T)(ByVal objectSet As ObjectSet(Of T), ByVal objects As IEnumerable(Of T))
For Each item In objects
objectSet.AddObject(item)
Next
End Sub
End Module
但我收到一条错误消息:
Type argument 'T' does not satisfy the 'Class' constraint for type parameter 'TEntity'.
我错过了什么?
最佳答案
出于同样的原因,C# 版本也无法编译。应该是:
public static void AddObjects<T>(this ObjectSet<T> objectSet,
IEnumerable<T> objects)
where T : class // Note this bit
{
foreach (var item in objects)
{
objectSet.AddObject(item);
}
}
VB版本是:
<Extension> _
Public Sub AddObjects(Of T As Class)(ByVal objectSet As ObjectSet(Of T), _
ByVal objects As IEnumerable(Of T))
Dim local As T
For Each local In objects
objectSet.AddObject(local)
Next
End Sub
请注意在 VB 版本中约束是如何成为类型参数声明的一部分的。有关详细信息,请参阅 MSDN .
关于c# - 将此 C# 代码转换为 VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084907/