gpt4 book ai didi

c# - 表示数学未知数的可空类成员

转载 作者:行者123 更新时间:2023-11-30 20:06:56 24 4
gpt4 key购买 nike

假设我有一个类 Point:

class Point
{
public double? x, y;
}

为了表明 xy 是未知数,我将它们的类型设置为可为空。

现在,当在数学表达式中使用这些值时,每次都必须将它们的值转换为 double 是很不方便的。 IE。 Math.Sin(p.x) 会产生编译时错误;您必须改为转换它:Math.Sin((double)p.x)

我解决转换问题的方法是让包装器只读执行转换的属性:

class Point
{
public double? x, y;

public double X { get { if (x != null) return (double)x; else throw new Exception(); } }
public double Y { get { if (y != null) return (double)y; else throw new Exception(); } }
}

这是一个好方法吗?

最佳答案

您可以使用 NullableValue 属性:

Math.Sin(p.x.Value)

或者

public double X { get { return x.Value; } }

如果未设置该值,这将引发异常,因此等同于您的代码。

关于这些方法的相对优点:

IMO 基于属性的方法使消费者免受 x 在内部存储为 Nullable 以表示未知性的实现细节。如果消费者只希望处理“已知”值,这将是我的偏好。但是,如果消费者希望满足 x 仍然“未知”的情况,那么公开一个 Nullable 属性将是可行的方法(任何消费者都可以使用HasValue Nullable 的属性。

关于c# - 表示数学未知数的可空类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162613/

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