首页 > 解决方案 > 如何在 C# 中创建自定义类型/ typedef 以防止错误地分配值?

问题描述

我是一个 C/C++ 人,对 C# 越来越有信心,但遇到了一个障碍,我似乎无法找到正确的搜索词/短语。我正在查看现有的代码集,它使用“浮点”类型来操作/传递数据。这样做的问题是,所讨论的数据可以用不同的单位表示,并且一些例程需要一个单位,而另一些则使用第二个单位。这使得阅读/跟踪/调试变得非常困难。一个熟悉的例子可能是计量单位。比如说它的重量。所以,它是使用盎司和磅(或克和公斤)的混合。所以,我想更改局部变量和例程定义以使用/接受“磅类型”或“盎司类型” - 所以,当我看到它时在代码中它' s 清楚数字应该在什么单位。我想像使用“浮点数”一样使用它(没有“新”或获取值而不是索引到类中)但如果错误让编译器抱怨单位在某处使用。(类似于枚举的工作方式)我通过谷歌看到有人建议“使用 PoundsType = float;” 但在我测试它是否能满足我的需要之前,那行甚至无法编译。- 所以,我不知道它是否已从语言中删除,或者从未有效。(类似于枚举的工作方式)我通过谷歌看到有人建议“使用 PoundsType = float;” 但在我测试它是否能满足我的需要之前,那行甚至无法编译。- 所以,我不知道它是否已从语言中删除,或者从未有效。(类似于枚举的工作方式)我通过谷歌看到有人建议“使用 PoundsType = float;” 但在我测试它是否能满足我的需要之前,那行甚至无法编译。- 所以,我不知道它是否已从语言中删除,或者从未有效。
我所追求的一个例子是:

void foo (PoundsType valueInPounds) { /* do something. */ }
void bar (OuncesType valueInOunces) {/* do something. */ }
PoundsType ouncesToPounds (OuncesType NumOunces) {return NumOunces / 16.0F; }
main () 
{
PoundsType numPounds = 50;
OuncesType numOunces = 38;
bar (numPounds); /* compile error */
}

标签: c#

解决方案


推荐阅读