1

假设我有以下课程:

class Number{

}

然后我想声明Number类型的变量,并给它们一个值,如 inintuint或任何类型的变量:

Number n = 14;

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

4

3 回答 3

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;
}

小心使用隐式运算符。它们是很好的语法糖,但它们也会使我们更难判断特定代码块中的实际情况。您还可以使用显式运算符,这需要进行类型转换才能调用。

于 2012-10-24T20:36:33.660 回答
1

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

于 2012-10-24T20:39:20.527 回答
1

您可以在类中重载运算符:

class Number
{
    public static Number operator=(int i)
    {
        ...
    }
}

顺便说一句,对于像这样的简单和小类,最好使用结构,而不是类。

于 2012-10-24T20:39:39.213 回答