泛型 class 从 java 转换为 C#
Generic class convert from java to C#
从 JAVA 转换为 C#:
public interface SomeInterface
{
public <T> void invoke(Collection<T> list);
}
class someMethod implemet SomeInterface
{
public <T> void invoke(Collection<T> list)
{
int count = 0;
if (itemToCount == null)
{
for ( T item : collection )
if (item == null)
count++;
}
else
{
//some code
}
return count;
}
}
如果我在 C# 中复制它,它将显示错误:
Error: The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
Error: Invalid token '>' in class, struct, or interface member declaration
Error: Invalid token '<' in class, struct, or interface member declaration
其实我不知道如何在c#中使用这种类型的代码。
如果你想在界面中创建一个集合,你不能在 C# 中通过这种方式来完成。
你需要这样做:
public interface MyInterface<T,TCollection>
where TCollection : ICollection<T>
{
TCollection MyCollection{ get; set; }
}
此外,您的 class 中会出现错误,例如 Andy Korneyev 所说
希望对您有所帮助。
Java 和 C# 在某些方面可能具有相似的概念,但两者并不相同。如果您想快速了解 C# 泛型,请查看此 C# tutorial on generics
最好不要只是将 Java 代码复制到 C# 中。对于您的代码,这个使用泛型的简单示例可能会对您有所帮助:
public interface SomeInterface
{
public int invoke<T>(ICollection<T> list);
}
public class SomeClass : SomeInterface
{
public int invoke<T>(ICollection<T> list)
{
int count = 0;
foreach (var item in list)
{
count++;
}
return count;
}
}
从 JAVA 转换为 C#:
public interface SomeInterface
{
public <T> void invoke(Collection<T> list);
}
class someMethod implemet SomeInterface
{
public <T> void invoke(Collection<T> list)
{
int count = 0;
if (itemToCount == null)
{
for ( T item : collection )
if (item == null)
count++;
}
else
{
//some code
}
return count;
}
}
如果我在 C# 中复制它,它将显示错误:
Error: The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
Error: Invalid token '>' in class, struct, or interface member declaration
Error: Invalid token '<' in class, struct, or interface member declaration
其实我不知道如何在c#中使用这种类型的代码。
如果你想在界面中创建一个集合,你不能在 C# 中通过这种方式来完成。
你需要这样做:
public interface MyInterface<T,TCollection>
where TCollection : ICollection<T>
{
TCollection MyCollection{ get; set; }
}
此外,您的 class 中会出现错误,例如 Andy Korneyev 所说
希望对您有所帮助。
Java 和 C# 在某些方面可能具有相似的概念,但两者并不相同。如果您想快速了解 C# 泛型,请查看此 C# tutorial on generics
最好不要只是将 Java 代码复制到 C# 中。对于您的代码,这个使用泛型的简单示例可能会对您有所帮助:
public interface SomeInterface
{
public int invoke<T>(ICollection<T> list);
}
public class SomeClass : SomeInterface
{
public int invoke<T>(ICollection<T> list)
{
int count = 0;
foreach (var item in list)
{
count++;
}
return count;
}
}