假设我有以下课程:
class Number{
}
然后我想声明Number
类型的变量,并给它们一个值,如 inint
或uint
或任何类型的变量:
Number n = 14;
我不确定我的问题是否好,但请帮助我,因为我是 C# 新手
您可以创建隐式转换运算符来处理此类情况。您的类需要隐式转换运算符将调用的构造函数。例如:
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;
}
小心使用隐式运算符。它们是很好的语法糖,但它们也会使我们更难判断特定代码块中的实际情况。您还可以使用显式运算符,这需要进行类型转换才能调用。
您想查看隐式以创建从 int 到您的数字类的隐式转换。
您可以在类中重载运算符:
class Number
{
public static Number operator=(int i)
{
...
}
}
顺便说一句,对于像这样的简单和小类,最好使用结构,而不是类。