C# 返回传递给类的类型的对象
假设我有这个班C# 返回传递给类的类型的对象,c#,generics,types,C#,Generics,Types,假设我有这个班 class SomeClass<T> { public static void someMethod(T param1) // this gives an error // I have to do something like (var param1) { // ... // ... } } class-SomeCla
class SomeClass<T>
{
public static void someMethod(T param1) // this gives an error
// I have to do something like (var param1)
{
// ...
// ...
}
}
class-SomeClass
{
public static void someMethod(T param1)//这给出了一个错误
//我必须做一些类似(var param1)的事情
{
// ...
// ...
}
}
如何要求param1的类型为T,以便我可以按以下方式调用该方法:
SomeOtherClass object1 = new SomeOtherClass();
SomeClass<SomeOtherClass>.someMethod(object1);
SomeOtherClass object1=newsomeotherclass();
SomeClass.someMethod(object1);
只需使用通用方法即可
public static void SomeMethod<T>(T param1) ...
publicstaticvoidsomethod(T参数1)。。。
class SomeClass
{
公共静态方法(T myobject)
{
}
}
我对C不太了解,但我认为您应该将泛型类型定义应用于方法而不是类
public static void someMethod<T>(T param1)
{
//not sure where <T> definition goes in signature...
}
publicstaticvoidsomethod(T参数1)
{
//不确定签名中的定义在哪里。。。
}
您遇到了什么错误?它可能与方法签名以外的内容有关。这对我来说很好:
class SomeClass<T>
{
public static void someMethod(T param1)
{
Console.WriteLine(param1);
}
}
class-SomeClass
{
公共静态方法(T参数1)
{
控制台写入线(参数1);
}
}
SomeClass.someMethod(4);
t您的代码不正确。根据Brandon所说的(并且不喜欢其他的伪装),你不必让你的方法泛型,因为它所属的整个类已经是泛型的了。。。除非您希望此方法的类型参数与类的类型参数不同:
class SomeClass<T>
{
public static void someMethod<U>(U myobject)
{
}
}
class-SomeClass
{
公共静态方法(U myobject)
{
}
}
这显然不是你想要的
顺便说一句,在danyolgiax的回答中,编译器将引发一个错误,因为类的类型参数T和方法的类型参数T(很糟糕)之间的名称冲突
你的错误肯定来自其他地方。为什么不提及您收到的确切错误消息?这将是解决方案的一半。:-) 方法sig上的
(var param1)
如何工作?如果您想添加限制,那么添加where T:SomeOtherClass
SomeClass<int>.someMethod(4);
class SomeClass<T>
{
public static void someMethod<U>(U myobject)
{
}
}