我是C#(和一般的编码)的新手,并试图做一个基本练习,在该练习中,我打印一组变量,交换变量,然后打印新变量。我认为尝试让串联的字符串打印变量会很有趣,这些变量会在变量发生更改时自行更新,但尝试这样做却遇到了麻烦。
public class Exercise1
{
public static double num1 = 3;
public static double num2 = 2;
public static string readable;
public static double Num1{
get { return num1;}
set {
readable = num1 + ", " + num2;
}
}
public static void Main( )
{
System.Console.WriteLine(readable);
num1 = 2;
num2 = 3;
System.Console.WriteLine(readable);
}
}
这个想法是检查num1
中是否有更改,然后更新readable
(如果有),但这似乎不起作用,因为我这样做时没有输出。
编辑:另外,有没有办法同时获得num1
和num2
?我需要为他们创建一个元组吗?
答案 0 :(得分:0)
我想您想要的是在num1更新时自动更新可读性。您通过使用属性遵循了正确的方法,但是您需要做的稍有不同。首先是您必须直接更新属性而不是变量,其次要通过属性更新变量值。您可以通过
print (A.name)
print (B.name)
此外,在代码中使用set{
num1=value;
readable = num1 + ", " + num2;
}
代替Num1 = 2
。如果要对两个变量都执行此操作,则可以为num2设置另一个属性
答案 1 :(得分:0)
尝试一下:
public class Exercise1
{
public static double num1 = 3;
public static double num2 = 2;
public static string readable
{
get { return num1 + ", " + num2;}
};
public static void Main( )
{
System.Console.WriteLine(readable);
num1 = 2;
num2 = 3;
System.Console.WriteLine(readable);
}
}
答案 2 :(得分:0)
我认为您不需要像 num1 和 num2 这样的单独变量。看下面的示例代码,我已经创建了 Num1 作为只读属性。意味着,您不能在其中设置任何值。相反,您可以使用此属性来读取串联的字符串。
using System;
public class Exercise1
{
public static double num = 3;
public static string readable;
public static string Num1
{
get
{
readable = readable + "," +num;
return readable.TrimStart(',');
}
}
public static void Main()
{
Console.WriteLine(Num1);
num = 4;
Console.WriteLine(Num1);
num = 5;
Console.WriteLine(Num1);
Console.ReadKey();
}
}
无论何时更改 num 的值并控制输出,您都将通过附加新值来获得新的可读字符串。
查看输出