c# - C# 中的泛型和访问 T 的静态成员

标签 c# generics static methods data-access

我的问题是关于 C# 以及如何访问静态成员的……好吧,我真的不知道如何解释它(哪种问题对问题不好,不是吗?)我只会给你一些示例代码:

Class test<T>{
     int method1(Obj Parameter1){
         //in here I want to do something which I would explain as
         T.TryParse(Parameter1);

         //my problem is that it does not work ... I get an error.
         //just to explain: if I declare test<int> (with type Integer)
         //I want my sample code to call int.TryParse(). If it were String
         //it should have been String.TryParse()
     }
}

谢谢你们的回答(顺便说一句,问题是:我如何解决这个问题而不出错)。这对您来说可能是个简单的问题!


编辑:谢谢大家的回答!

虽然我认为 try - catch 短语是最优雅的,但根据我使用 vb 的经验,我知道它可能真的很糟糕。我用过一次,运行一个程序大约需要 30 分钟,后来只需要 2 分钟就可以计算,因为我避免了 try - catch。

这就是为什么我选择 switch 语句作为最佳答案的原因。它使代码更复杂,但另一方面我认为它相对较快且相对易于阅读。 (虽然我仍然认为应该有更优雅的方式......也许在我学习的下一门语言中)


如果您有其他建议,我仍在等待(并愿意参与)

最佳答案

问题是 TryParse 没有在任何地方的接口(interface)或基类上定义,因此您不能假设传递到您的类中的类型将具有该功能。除非你能以某种方式限制 T,否则你会经常遇到这种情况。

Constraints on Type Parameters

关于c# - C# 中的泛型和访问 T 的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19843/

相关文章:

c - 静态函数的外部声明是否会破坏内部链接?

c# - HttpClient GetAsync 大约需要 2 秒

c# - 为什么 Java on Server 和 C# on Client 是流行的选择?

c# - 在单个执行点运行多个 IQueryable

c# - 根据成员对象列表过滤 LINQ 查询

c# - 不同节点类型的树

java - 将上限限制为 Java 泛型方法中给定类型之一

c++ - 初始化仅由一组对象共享的静态变量 C++

java - 捕获 Java 泛型中的通配符

java - 单例与静态偏好和缺陷