假设我有以下类(class):
class Number{
}
然后我想声明 Number
类型的变量,并给它们一个值,如 int
或 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;
}
小心隐式运算符。它们是很好的语法糖,但它们也会让我们更难分辨特定代码块中到底发生了什么。您还可以使用显式运算符,这需要进行类型转换才能调用。
关于c# - 声明新类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057272/