C#学习教程:在泛型类share中为静态方法设置无类型会威胁类型为Object类型。但是,据我所知,只要必须实例化或简单地使用泛型类,C#就会强制执行类型。但是,假设我们有一个泛型类并且我们需要一个不依赖于.首先,我们知道它可以移动到一个单独的上下文中,或者我们可以设置一个T的虚拟类型,但是作为一个编程难题,有没有一种方法可以在不定义T的类型的情况下调用它?示例:classTestwhereT:ITestable{...publicstaticvoidCreateTestFile(StringfileName){...}}Test.CreateTestFile("test.txt");这可以在Java中完成,显然不能在C#中完成。但我只是想确定一下。Java和C#以不同方式实现泛型:希望您理解为什么这种差异对您的场景很重要。忽略T在Java中是微不足道的,但在C#中就没那么容易了。如果您的代码中不需要T,请使用非泛型方法:abstractclassTest{publicstaticvoidCreateTestFile(StringfileName){...}}classTest:TestwhereT:ITestable{...}here,那更好:)另外,请注意,例如方法,您可以放宽使用协变和逆变接口在编译时已知T的要求。例如,如果您使用协变接口,您只需要知道T的基类型。您应该考虑分离您的关注点,将公共静态方法放在其他地方。但是,如果你真的想调用它,这很好用:}}classTestwhereT:ITestable{publicstaticvoidCreateTestFile(StringfileName){}}publicinterfaceITestable{}如果你有一个约束whereT:class,new(),你可以这样做:classProgram{staticvoid主要(字符串[]args){测试。CreateTestFile("test.txt");}}classTestwhereT:class,new(){publicstaticvoidCreateTestFile(StringfileName){}}publicinterfaceITestable{}如果你有一个更奇怪的约束,比如whereT:class,ITestable,new()我不再担心让编译器跳过你的设计,重新考虑你的设计,把这些问题分开:以上是C#学习教程:为泛型类中的静态方法设置untypedsharing如果对你有用,你需要进一步了解C#学习教程,希望大家多多关注—classProgram{staticvoidMain(string[]args){Util.CreateTestFile("test.txt");}}classUtil{publicstaticvoidCreateTestFile(StringfileName){}}classTestwhereT:class,ITestable,new(){/*...*/}公共接口ITestable{}整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
