【发布时间】:2015-04-28 21:39:00
【问题描述】:
这是来自一些测试的问题。问题是“泛型允许按类型参数化哪些元素?” 和5种答案:
- 类
- 结构
- 方法
- 活动
- 字段
乍一看问题很简单,但我不确定正确答案。让我们一步一步来。
- 类。
我们可以这样写
class SuperKeyType<K, V, U>
where U : System.IComparable<U>
where V : new()
{ }
所以,类可以按类型参数化。结构体也是如此。
关于方法。我们可以这样写:
class GenericList<T>
{
// CS0693
void SampleMethod<T>() { }
}
所以,方法也是。
关于事件和字段:
class Foo<TValue> {
public string Value { get; set; }
public TValue TypedValue {
get {
return (TValue)Convert.ChangeType(Value, tyepof(TValue));
}
}
}
属性是按类型参数化的,对吗(与事件相同)?但是在下一页
我看到以下答案:
属性、事件、构造函数等不能是通用的——只有方法 并且类型可以是通用的。大多数时候这不是问题,但我 同意有时这是一种痛苦。布兰农的回答给出了两个 合理的解决方法。
我在这个地方问自己 - “按类型参数化”到底意味着什么?上面的属性是否按类型参数化? 什么是正确答案:
- 是的
- 是的
- 是的
- 假
- 假
或
- 是的
- 是的
- 是的
- 是的
- 是的
【问题讨论】: