如何将值传递给C#泛型?

pre*_*mba 5 .net c# generics

在C ++中,模板具有可以将值作为参数传递给函数模板的功能。如何在C#中执行相同的操作?

例如,我想做类似以下的事情:

template <unsigned n> struct Factorial {
     enum { 
        result = n * Factorial<n - 1>::result;
     };
};
template <> struct Factorial<0> {
      enum {
        result = 1;
      };
};
Run Code Online (Sandbox Code Playgroud)

但是在C#中。我怎样才能做到这一点?

顺便说一句,我对它们的实际需求涉及按需生成类(更改了一些静态值),因此提供的代码仅是示例。

Dan*_*ite 5

C#泛型不像C ++模板那样。它们仅适用于类型,不适用于值。

  • _我对它们的实际需求包括按需生成类(更改了一些静态值)_-是您的实际问题还是其他一些问题的解决方案,可以用C#来解决? (3认同)
  • 我知道,我正在寻找解决方法。 (2认同)

Ree*_*sey 5

但在 C# 中。我怎样才能做到这一点?

顺便说一句,我对它们的实际需求涉及按需生成类(更改了一些静态值),因此所提供的代码只是一个示例。

正如Daniel 所解释的,通过泛型这是不可能的。

一种可能的替代方案是使用T4 模板。根据您的需求,您可能会在编译时根据模板生成类,这听起来可能会满足您的需求。