c# - 为什么我不能从 long 派生?

标签 c# .net type-safety

我的函数返回一些长值 其中包含低 32 位和高 32 位的两个值。

我认为处理返回值的最佳方式 是从 long 派生我的自定义类型并提供 类型扩展器,如 GetLowerValue()、GetHigherValue()。

问题是 .NET 不允许从 long 派生

如果你编译那个

public class SubmitOrderResult : long
{
}

你得到:

cannot derive from sealed type 'long'

为什么会这样设计,如何克服?

谢谢

最佳答案

如前所述,.NET 中的值类型是密封的,因此您无法从 long 派生。您应该按照建议创建扩展方法。

例子

public static class LongExtensions
{
    public static long GetLowerValue(this long value)
    {
        ...
    }

    public static long GetHigherValue(this long value)
    {
        ...
    }
}

关于c# - 为什么我不能从 long 派生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782927/

相关文章:

c# - 使用介于两者之间的方法将 c# List 转移到另一个列表

c - C 中类似 Haskell 的类型系统

Scala - Slick - 为包装的选项获取 TypedType [T]

c# - 从网站读取特定文本

c# - 如何在 Windows 应用商店应用程序中添加 GetFileFromPathAsync 的路径

.net - 在 (.NET 4.0 C#) Sync Framework 4.0 CTP 中将 "0"/"1"解析为 bool

java - 有界通配符和函数参数的关系

c# - 如何使用 C# 在转发器控件中查找标签值?

c# - 可以在 ASPX 标记中执行内联代码吗?

c# - 空闲/网络利用率低时下载