- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一些测试的问题。问题是“泛型允许哪些元素按类型进行参数化?”和 5 种答案:
- Classes
- Structs
- Methods
- Events
- Fields
乍一看问题很简单,但我不确定正确答案。让我们一步一步来。
我们可以这样写
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));
}
}
}
属性按类型参数化,正确吗(与事件相同)?但是在接下来的页面上
我看到以下答案:
Properties, events, constructors etc can't be generic - only methods and types can be generic. Most of the time that's not a problem, but I agree that sometimes it's a pain. Brannon's answer gives two reasonable workarounds.
我在这个地方问自己——“按类型参数化”到底是什么意思?上面的属性是否按类型参数化?正确答案是什么:
- true
- true
- true
- false
- false
或
- true
- true
- true
- true
- true
最佳答案
Property is parametrized by type, correct (the same with Events)?
不,不是。属性本身没有类型参数 - 您已经在类上获得了它。
将其与您的方法示例进行比较:
class GenericList<T>
{
// CS0693
void SampleMethod<T>() { }
}
...这样会更清楚
class NonGenericType
{
void GenericMethod<T>() { }
}
注意类型参数 (T
) 是如何在方法签名中引入的,不是在类中。
您不能为字段、属性、事件、构造函数或终结器指定类型参数。
通用属性必须类似于:
// Not valid: properties can't be generic. But imagine...
public T Value<T> { get; set; }
同样,通用构造函数类似于:
public class Foo
{
// Not valid: constructors can't be generic. But imagine...
public Foo<T>(T initializationValue)
{
// Note that this isn't constructing a Foo<T> -
// Foo is a non-generic type. It's only the constructor
// that is generic.
}
}
通用字段作为一个概念甚至更奇怪。这可能意味着什么?
private int field<T>;
...
int x = field<string>;
关于c# - 泛型允许哪些元素按类型参数化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28743673/
我是一名优秀的程序员,十分优秀!