首页 > 解决方案 > 如何通过在 C# 中为实例赋值来设置类中的属性

问题描述

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

我可以从类中访问和操作属性。但是,在从外部访问值时,我必须将其用作 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.

使用结构来完成这项工作可能并不理想。例如结构不允许无参数构造函数。它会抛出“结构不能包含显式无参数构造函数”错误。

总是希望使用一个类来代替。

标签: c#

解决方案


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

程序.cs:

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

推荐阅读