gpt4 book ai didi

c# - 用于静态泛型类?

转载 作者:IT王子 更新时间:2023-10-29 04:23:02 25 4
gpt4 key购买 nike

C# 中静态 泛型类的主要用途是什么?什么时候应该使用它们?哪些示例最能说明它们的用法?

例如

public static class Example<T>
{
public static ...
}

由于您不能在其中定义扩展方法,因此它们的实用性似乎有些受限。关于该主题的 Web 引用资料很少,因此显然没有很多人使用它们。这是一对:-

http://ayende.com/Blog/archive/2005/10/05/StaticGenericClass.aspx

Static Generic Class as Dictionary


给出的答案摘要

关键问题似乎是“带有静态方法的静态泛型类带有静态泛型成员的非泛型静态类有什么区别?” p>

关于使用哪个的决定似乎围绕着“该类是否需要在内部存储特定于类型的状态?”

如果不需要特定类型的内部存储,那么带有通用静态方法的静态非通用类似乎更可取,因为调用语法更好,并且您可以在其中定义扩展方法。

最佳答案

我使用静态泛型类来缓存大量反射代码。

假设我需要构建一个实例化对象的表达式树。我在类的静态构造函数中构建一次,将其编译为 lambda 表达式,然后将其缓存在静态类的成员中。我通常不会让这些类公开评估——它们通常是其他类的助手。通过以这种方式缓存我的表达式,我避免了将我的表达式缓存在某种 Dictionary<Type, delegate> 中的需要。 .

BCL 中有此模式的示例. ( DataRow ) 扩展方法 Field<T>()SetField<T>()使用(私有(private))静态泛型类 System.Data.DataRowExtensions+UnboxT<T> .用 Reflector 检查一下。

关于c# - 用于静态泛型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com