出于性能原因,我有一些类型是结构体,并且具有一些共性。我想知道我是否可以将它们重构为开放类型结构--如果可以的话,我是否应该期待任何问题。
发布于 2010-12-23 02:38:31
可以,停那儿吧。框架库提供的一些泛型类型,例如KeyValuePair,实际上是structs。
发布于 2010-12-23 03:12:04
更新:显然,您所说的“开放类型”并不意味着C#规范对“开放类型”的定义是相同的。你的意思是“泛型”。
是的,结构可以是泛型的。
回答你问题的第二部分:我不知道你脑海中有什么样的“问题”。你能给我举一个你觉得有问题的例子吗?
最初的答案,假设你实际上问的是开放类型:
C#规范在这一点上是明确的:
·类型参数定义了一个开放类型。
·当且仅当数组类型的元素类型是开放类型时,该数组类型才是开放类型。
·当且仅当一个或多个类型参数是开放类型时,构造的类型才是开放类型。当且仅当构造的嵌套类型的一个或多个类型参数或其包含类型的一个或多个类型参数是开放类型时,该构造的嵌套类型才是开放类型。
这就对了。当且仅当结构类型或其封闭类型是泛型类型且其类型参数之一具有开放类型时,该结构类型才是开放类型。例如:
struct S<T>
{
S<T> s1; // open struct type
Nullable<S<T>> s2; // another open struct type
}
class O<V>
{
class C<U> where U : struct
{
struct R
{
U u; // open type constrained to be value type
R r1; // open struct type; this is O<V>.C<U>.R
O<V>.C<S<U>>.R r2; // another open struct type.
O<int>.C<S<V>>.R r3; // another open struct type
}
}
}我们可以整天保持开放的结构类型。
https://stackoverflow.com/questions/4512406
复制相似问题