Cap*_*mic 6 .net c# type-safety
我的函数返回一个long值,它包含两个较低和较高32位的值.
我认为处理返回值的最佳方法是从long派生我的自定义类型并提供类型扩展器,如GetLowerValue(),GetHigherValue().
问题是.NET不允许从long派生
如果你编译它
public class SubmitOrderResult : long
{
}
Run Code Online (Sandbox Code Playgroud)
你得到:
cannot derive from sealed type 'long'
Run Code Online (Sandbox Code Playgroud)
为什么设计如此,如何克服它?
谢谢
Jam*_*mes 11
如前所述,.NET中的值类型是密封的,因此无法从长时间派生.您应该按照建议创建扩展方法.
例
public static class LongExtensions
{
public static long GetLowerValue(this long value)
{
...
}
public static long GetHigherValue(this long value)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我的函数返回一个long值,它包含两个较低和较高32位的值.
这听起来像是一个非常非常糟糕的黑客.它可能适用于接近金属的语言(例如C),但不适用于更高级别的面向对象语言.
在OO语言中,您可以扩展类型系统,而不是骚扰现有类型来进行出价.因此,解决方案应该是创建一个包含您的信息的新类型.
| 归档时间: |
|
| 查看次数: |
2208 次 |
| 最近记录: |