c# - 如何在 C# 6.0 的泛型类中包含特定于类型的代码?
问题描述
我正在用 C# 6.0 (VS2015) 编写一个泛型类,它具有泛型类型的模块级值(字段、属性等)。但是,我需要为某些数据类型(特别是int
)包含额外的方法/代码,但我无法弄清楚如何以编译器接受的方式将 int 的值/结果分配给泛型类型属性。
class FOO<T>
{
public T yada;
void BAR(int nom)
{
if(nom is T)
{
yada = (T)nom;
}
}
}
我不知道如何让它接受最后一行:yada = (T)nom;
,它总是说它不能转换nom
为T
.
我觉得必须有一个简单的方法来做到这一点,我什至可能以前做过,但我现在肯定不记得了。我试图广泛地用谷歌搜索这个,但我必须使用错误的词,因为它一直返回的只是关于如何对类本身进行类型约束的文章,这不是我想要做的。
解决方案
你可以简单地写:
class FOO<T>
{
public T yada;
public void BAR(int nom)
{
if ( nom is T )
{
yada = (T)(object)nom;
}
}
}
例子
var foo = new FOO<int>();
foo.BAR(10);
Console.WriteLine(foo.yada);
输出
10
推荐阅读
- mysql - 当它的 WHERE 只指定一个时,为什么这个 UPDATE 会影响 2 行?
- python-3.x - 父对象包含大数据时多处理速度慢
- ruby-on-rails - Rails 6 和 Puma 是否仍需要在工作启动时建立连接?
- python - 用重复值重塑 Pandas 数据框
- python - 在 Python 中更新列表列表
- r - 使用多个 ggplot2 geom_crossbar 参数时重置颜色美学
- google-cloud-firestore - Firestore RPC API 中 page_size 的最大值是多少?
- java - 仅给定开始日期(日历)和使用java 1.8版增加的天数,如何计算到结束日期?
- android - Android 将 json 数据发送到汽车的主机
- docker - 如何在 docker 网络上使用 http 代理访问 localhost 服务