dlr*_*as2 5 .net c# conditional-compilation
我正在尝试编写处理不同数字类型的类.我知道C#(和我一般认为.Net)没有INumber接口,所以我不能使用如下内容:
public class Adder<T> where T:INumber
{
public T Add(T a, T b)
{
return a + b;
}
}
Run Code Online (Sandbox Code Playgroud)
不过没关系,因为我想避免我的每个号码的装箱/拆箱.但是,我可以为我想支持的每种类型使用条件编译:
#if FLOAT
public class AdderF
{
public float Add(float a, float b)
#else
public class Adder
{
public int Add(int a, int b)
#endif
{
return a + b;
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着我需要编写不同的Library.dll和LibraryF.dll,但是.有没有更优雅的解决方案呢?
显然,在我的例子中,我可以简单地编写代码两次.但是,我想使用此过程来创建具有整数版本和浮点版本的大型复杂数据结构,因此在更新结构时不希望出现复制粘贴错误的可能性.我也不希望速度损失将浮点结构包装在一个整体包装器中,并且不必要地将所有输入转换为更宽松的数据类型.