【发布时间】:2019-10-03 21:16:10
【问题描述】:
我想做一个结构体,当它的值被设置时,你可以通过变量名来调用值。
struct A
{
int Value;
}
Main()
{
// Sets Value to 9
A Number = 9;
Console.Write(Number);
// output should be 9
}
我希望输出为 9
【问题讨论】:
我想做一个结构体,当它的值被设置时,你可以通过变量名来调用值。
struct A
{
int Value;
}
Main()
{
// Sets Value to 9
A Number = 9;
Console.Write(Number);
// output should be 9
}
我希望输出为 9
【问题讨论】:
您的结构缺少 Value 的访问器
struct A
{
public int Value { get; set; }
}
Main()
{
A number = new A();
number.Value = 9;
Console.WriteLine(number.Value)
}
【讨论】:
你可以像这样优化你的代码:
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);
【讨论】:
要准确使用您编写的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);
}
【讨论】:
除了 Peter B 的回答之外,您还可以定义相反的隐式转换,而不是 ToString()
public static implicit operator int(A a)
{
return a.Value;
}
【讨论】: