我想做一个结构,当设置它的值时,可以通过变量名来调用该值。
struct A
{
int Value;
}
Main()
{
// Sets Value to 9
A Number = 9;
Console.Write(Number);
// output should be 9
}
我希望输出为9
答案 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;
}