我们假设我有以下课程:
class Number{
}
我希望声明Number
类型的变量,并为它们提供类似于int
或uint
或任何类型变量的值:
Number n = 14;
我不确定我的问题是否合适,但请帮助我,因为我是C#的新手
答案 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,对于像这样的简单和小类,最好使用结构,而不是类。