通过变量名称调用时返回期望值

时间:2019-05-16 14:43:02

标签: c# struct

我想做一个结构,当设置它的值时,可以通过变量名来调用该值。

struct A
{
   int Value;
}

Main()
{
   // Sets Value to 9
   A Number = 9;
   Console.Write(Number);
   // output should be 9
}

我希望输出为9

4 个答案:

答案 0 :(得分:2)

您可以像这样优化代码:

    struct A
    {
        public int Value;

        public A(int val)
        {
            Value = val;
        }

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

并按需要使用:

        // Sets Value to 9
        A Number = new A(9);
        Console.Write(Number);

答案 1 :(得分:2)

要完全使用编写的内容A number = 9; Console.Write(Number);,首先需要定义一个隐式赋值运算符,然后需要覆盖ToString()方法以获取正确的输出。示例代码:

struct A
{
    public int Value;

    public A(int value)
    {
        Value = value;
    }

    // This allows creating an instance of struct A by writing it as an assignment statement
    static public implicit operator A(int value)
    {
        return new A(value);
    }

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

public static void Main()
{
    A Number = 9;
    Console.Write(Number);
}

此处为现场演示:https://dotnetfiddle.net/WZPsLX

答案 2 :(得分:1)

您的结构错过了 Value

的访问器
    struct A
    {
        public int Value { get; set; }
    }
    Main()
    {
        A number = new A();
        number.Value = 9;
        Console.WriteLine(number.Value)
    }

答案 3 :(得分:1)

除了彼得B的答案,您还可以定义相反的隐式转换,而不是ToString()

public static implicit operator int(A a)
{
    return a.Value;
}