声明新类型

时间:2012-10-24 20:34:12

标签: c# types numbers

我们假设我有以下课程:

class Number{

}

我希望声明Number类型的变量,并为它们提供类似于intuint或任何类型变量的值:

Number n = 14;

我不确定我的问题是否合适,但请帮助我,因为我是C#的新手

3 个答案:

答案 0 :(得分:7)

您可以创建隐式转换运算符来处理这样的情况。您的类需要隐式转换运算符将调用的构造函数。例如:

class Number
{
    public int Value { get; set; }

    public Number(int initialValue)
    {
        Value = initialValue;
    }

    public static implicit operator Number(int initialValue)
    {
        return new Number(initialValue);
    }
}

然后就行了

Number n = 14;

将有效地等同于

Number n = new Number(14);

您可以在课程中添加操作符以向另一个方向移动:

public static implicit operator int(Number number)
{
    if (number == null) {
        // Or do something else (return 0, -1, whatever makes sense in the
        // context of your application).
        throw new ArgumentNullException("number");
    }

    return number.Value;
}
使用隐式运算符

小心。它们是很好的语法糖,但它们也可以让你更难分辨特定代码块中的真实情况。您还可以使用显式运算符,它需要使用类型转换来调用。

答案 1 :(得分:1)

您希望查看implicit以创建从int到您的数字类的隐式转换。

答案 2 :(得分:1)

您可以在班级中重载运算符:

class Number
{
    public static Number operator=(int i)
    {
        ...
    }
}
BTW,对于像这样的简单和小类,最好使用结构,而不是类。