检测到变量C#的变化时无输出

时间:2018-10-20 16:28:38

标签: c#

我是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(如果有),但这似乎不起作用,因为我这样做时没有输出。

编辑:另外,有没有办法同时获得num1num2?我需要为他们创建一个元组吗?

3 个答案:

答案 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 的值并控制输出,您都将通过附加新值来获得新的可读字符串。

查看输出

enter image description here