gpt4 book ai didi

c# - C#中Int32的扩展方法

转载 作者:太空狗 更新时间:2023-10-29 19:59:07 26 4
gpt4 key购买 nike

我设想能够编写流畅的代码,为代码库中的数字增添意义。假设您想要一个数字来表示以英里为单位的距离。你会有这样的东西:

用法:

var result = myMethod(100.Miles());

我认为这比简单地传入 int 更具可读性,而且您大概可以对 Miles 类型应用边界检查。

扩展方法和结构实现:

static class IntExtensions
{
public static Miles(this int i) { get { return new Miles { Count = i }; } }
}

public struct Miles
{
public int Count { get; private set; } //optionally perform bounds checking
}

这样的想法会有用吗,还是在炎热的星期五为时已晚?

编辑:是的,没有扩展属性看起来不是那么整洁...对于匆忙的无效代码表示歉意。这只是一个想法。

最佳答案

这是一个有趣的想法,但在做这样的事情之前,我会要求有一个非常强大的用例。一方面,一旦将数字转换为“英里”,就不能再将其视为整数。您要么必须实现所有运算符,要么在对它们执行算术运算之前将英里数转换回整数。如果没有充分的理由这样做,就会有很多额外的工作。

不过,在某些情况下,这是一个不错的策略。 我想我记得听说过值(value)数百万美元的火箭或失败的东西 NASA 一次lost a $125 million space ship因为程序员将错误的度量单位传递给函数。这将帮助您避免该问题。

在相关说明中,您可能对 F# 感兴趣,它有 built-in support for units of measure .

关于c# - C#中Int32的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com