我有一堆代码,其中包含许多具有不同含义的整数(我宁愿使用通用解决方案,但对于一个具体示例:每月的一天与一年中的月份与年份等)。我希望能够根据这些含义重载类构造函数。
例如
int a; // takes role A
int b; // takes role B
var A = new Foo(a); // should call one constructor
var B = new Foo(b); // should call another constructor
现在显然这行不通,但如果我可以定义一个类型(不仅仅是别名),int
除了这样的名称之外,它是一个类型:
typedef int TypeA; // stealing the C syntax
typedef int TypeB;
我可以做我需要的重载,让类型系统跟踪什么是什么。特别是,这将允许我确保值不会混淆,例如从函数返回的值作为年份不用作月份中的日期。
在 c# 中是否有任何方法class
或struct
包装器可以做到这一点?
如果该解决方案也适用于浮点数和双精度数,那就太好了。