约束类型允许C#中的加/减操作(+/-)

ken*_*ken 17 c# types

这可能吗?

public interface Foo<TBar>
  where TBar : (can use the '+' and '-' operators)
Run Code Online (Sandbox Code Playgroud)

谢谢.

Kir*_*oll 7

您可以创建一个Foo重载这两个运算符的类型,然后将泛型类型约束到它.但是,您不能将通用参数限制为要求任意类型在临时基础上重载此类运算符.


Jar*_*Par 5

是和否.通用参数只能限制为

  • 实现一个表面
  • 有一个可访问的无参数构造函数(new())
  • 有一个特定的基本类型
  • 是一个结构/类

这对于是有用的这些唯一的一个+-运营商是基本类型.因此,如果基类型包含这些运算符,您可以限制您TBar也实现它们.

然而,这在一般意义上不起作用.无论您选择哪种基本类型,它都无法使用最常用的类型+-.也就是说int,double,string,等...因为它们继承ValueType不具有此约束