c# - C# 中的新类型定义

标签 c# types

我正在寻找定义新类型并在 C# 中使用它的可能性,如下所示:

类定义:

public class Position
{
    public double180 Longitude { get; set; } // double180 is a type within a range -180 and 180
    public double90 Latitude { get; set; } // double90 is a type within a range of -90 and 90
}

用法:

var position = new Position
{
     Longitude = 45,
     Latitude = 96 // This line should give an error while initializing the object
};

最佳答案

你不一定需要一个新的类型。您可以手动编写一个验证值的 setter ,而不是使用自动属性:

public double Latitude
{
    get
    {
        return mLatitude;
    }

    set
    {
        if (value > 90 || value < -90)
        {
            throw new ArgumentOutOfRangeException("Invalid latitude");
        }

        mLatitude = value;
    }
}

private double mLatitude;

如果你想重用这段代码,你可以定义你自己的类型并在其中使用上面的setter;然后提供适当的构造函数和转换运算符。

关于c# - C# 中的新类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583800/

相关文章:

c# - 同时运行不同的表单

c# - 当使用 C# 图表 API 绘制的第一个点位于 (0,0) 时,X 轴值自动递增

python - 在 python 中处理坐标的最合适的变量类型

javascript - Flowtype:接口(interface)不能与联合类型结合

Haskell - 匹配类型实例

c# - 为什么小数点 1.00M 和 1.000000M 在 C# 中不同

C#:将一个文本文件的*内容*附加到另一个文本文件

c# - mvc 中的复选框返回 null

c# - 未为 WS 2008 R2 上的命名管道设置句柄

c# - 我可以拥有/使用具有List <Class <T >>的字段/属性,其中T可以是任何东西吗?