如何通过在C#

时间:2018-12-04 20:08:01

标签: c#

我正在尝试创建一个新的数据类型,并在类的Value属性中拥有一个属性。

我可以从类中访问和操作属性。但是,在从外部访问该值时,我必须将其用作instance.Value。

是否可以通过直接将值分配给实例来设置属性,就像我们对基于数组的类使用索引器一样?

例如,我要执行的操作是

public class NewNumberType<T> 
{
    public T Value {get; set;}
}

在调用类中,我想将NewNumberType用作:

NewNumberType<double> d = new NewNumberType<double>();
// d.Value = 15; I dont want to do this
d = 15; // I want to refer the instance this way.

为工作使用结构可能并不理想。例如,结构不允许无参数的构造函数。它将抛出“结构不能包含显式的无参数构造函数”错误。

总是希望使用类代替。

1 个答案:

答案 0 :(得分:1)

是的,有可能。您应该定义隐式转换运算符,并且如果您想在控制台中显示变量的值,那么也有必要重写ToString()

public class NewNumberType<T>
{
    public NewNumberType(T v)
    {
        Value = v;
    }

    public NewNumberType()
    {
    }

    public T Value { get; set; }

    public static implicit operator NewNumberType<T>(T v)
    {
        return new NewNumberType<T>(v);
    }

    public override string ToString()
    {
        return Value.ToString();
    }
}

Program.cs:

class Program
{
    static void Main(string[] args)
    {
        NewNumberType<double> d = new NewNumberType<double>();
        d = 15;
        Console.WriteLine(d);
        Console.ReadLine();
    }
}