C# 如何在C中通过给实例赋值来设置类中的属性

C# 如何在C中通过给实例赋值来设置类中的属性,c#,C#,我试图创建一个新的数据类型,并在类的property Value中有一个属性 我可以从类中访问和操作属性。但是,当从外部访问该值时,我必须将其用作instance.value 是否可以通过直接将值分配给实例来设置属性,就像我们对基于数组的类使用索引器一样 例如,我想做的是: public class NewNumberType<T> { public T Value {get; set;} } 在调用类中,我希望使用NewNumberType作为: NewNumberTy

我试图创建一个新的数据类型,并在类的property 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.
为作业使用结构可能并不理想。例如,结构不允许无参数构造函数。。它将抛出结构不能包含显式无参数构造函数错误


总是希望使用类来代替。

是的,这是可能的。您应该定义隐式转换运算符,如果您想在控制台中显示变量的值,也值得重写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();
    }
}

您似乎想要做的是隐式地将double转换为您的类型。您可以创建,但每次将double分配给NewNumberType时,都会产生新实例。@Shazi提到的链接确实解决了这个问题。。然而,使用实例作为正则变量似乎是不可能的?甚至上面提到的链接中的描述也使用了dig2.val,如果我们在final Console.Writeline的上下文中只使用dig2?您总是可以重载ToString方法以返回val.ToString.Yes@orhtej2,但是在计算中使用会很麻烦,因为我们很少在存储值后直接输出它。通常它会经过很多的操作。