我想创建一个具有以下签名的ValueGetter实例:
public delegate void ValueGetter<TValue>(ref TValue value);
如果TValue
的类型不是int
,则实例应引发异常,否则将value
设置为myInt
。
我能想到的最好的方法是:
public void GetVal<TValue>(ref TValue val)
{
if (typeof(TValue) != typeof(int))
throw new NotSupportedException();
val = (TValue)(object)myInt;
}
但是,这并不理想,因为它涉及拳击。有更好的方法吗?
答案 0 :(得分:1)
首先,我不确定代码实际上是否将值括起来。仅当您将值存储在object
变量中时才显示该框,而不会这样做。您只需将其投放两次,就可以在现实中对其进行优化。
第二,目前尚不清楚为什么这将是一个问题。
第三,抛出异常似乎很奇怪。在什么情况下会使用int
以外的东西?在这些情况下,例外是适当的应对措施吗?