c# - 声明新类型

标签 c# types numbers

假设我有以下类(class):

class Number{

}

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

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/

相关文章:

python - 如何测试 Cython 属性是否为生成器?

java - 如何确定对象类型而不迭代所有可能的类型?

javascript - 为什么这个 JavaScript 函数有效?

c# - Azure 连接字符串

c# - 编辑 : NGINX reverse proxy ASP. NET Core 5.0 : localhost:5000 closes connection but www. google.com 有效

c# - Angular 2 - 将来自 Web Api 的 byte[] 呈现为图像源

java - 可以通过 Java 泛型类型系统强制执行自然排序吗?

javascript - JS函数将数字除以千、百、十等。

php - 如何在 php 中格式化带有 00 前缀的数字?

c# - 部署 asp.net web 应用程序时出现问题