我正在尝试创建一个新的数据类型,并在类的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.
为工作使用结构可能并不理想。例如,结构不允许无参数的构造函数。它将抛出“结构不能包含显式的无参数构造函数”错误。
总是希望使用类代替。
答案 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();
}
}