在c#中显示私有int的值

时间:2016-09-17 17:17:15

标签: c# private public

这是代码

我无法让限制计数器每次都增加 我可以让它在每个输出线之间计数到1,但就是这样 知道为什么吗? 我希望它能够计算每一次“超调”

class Actuator
{
    private int limit_count = 0;

    public int Inc_Limit_counter(int temp,int co2_conc,int rel_humid)
    {
        if(temp > 70 || co2_conc > 450 || rel_humid > 77)
            limit_count++;

        //Console.WriteLine("test {0}",limit_count);
         return limit_count;
    }

    public int Get_limit_count()
    {
        return limit_count;
    }
}


class Program
{
    static int read_random_values()
    {
        Random r = new Random();
        int temp, co2_conc, rel_humid, i;

        Console.WriteLine("Temperature in celcius:");
        for (i = 0; i <= 100; i++)
        {
            temp = r.Next(-50,50);
            co2_conc = r.Next(300,600);
            rel_humid = r.Next(0,100);

            Console.WriteLine("The temperature is: {0}, Co2 concentration is: {1} and Relative Humidity is: {2}",temp,co2_conc,rel_humid);

            Actuator Counter1 = new Actuator();
            Counter1.Inc_Limit_counter(temp, co2_conc, rel_humid);     
        }

        return 0;
    }


    static void Main()
    {
        read_random_values();
        Actuator object1 = new Actuator();
        object1.Get_limit_count();
    }
}

2 个答案:

答案 0 :(得分:1)

问题是,每次调用Inc方法时,您都在创建Actuator类的新实例。因此,您的计数器将增加一次,然后该对象不再使用。我想你缺少计数器的静态关键字和执行器类的两个方法。

答案 1 :(得分:0)

首先:在Main方法中,您将创建一个新的Actuator实例并读取其值。创建新的执行器时,limit_count字段将初始化为0.

第二:在read_random_values方法中,您将继续在for循环中创建新的Actuators。每次执行此操作时,您都有一个新的Actuator,其limit_count为零。

第三:在Main方法中,您正在调用Get_limit_count(object1)。 Get_limit_count不接受参数,应该像这个object1.Get_limit_count一样调用。

尝试以下更改:

static void Main()
{
    Actuator object1 = new Actuator();
    read_random_values(object1);

    Console.WriteLine("Final limit count: " + object1.Get_limit_count()); //Get_limit_count doesn't take a parameter and is called like this.
}

static int read_random_values(Actuator actuator)
{
    Random r = new Random();
    int temp, co2_conc, rel_humid, i;


  Console.WriteLine("Temperature in celcius:");
  for (i = 0; i <= 100; i++)
  {
     temp = r.Next(-50,50);
     co2_conc = r.Next(300,600);
     rel_humid = r.Next(0,100);



    Console.WriteLine("The temperature is: {0}, Co2 concentration is: {1} and Relative Humidity is: {2}",temp,co2_conc,rel_humid);

    actuator.Inc_Limit_counter(temp, co2_conc, rel_humid);     

  }
}

作为旁注,请考虑查看命名约定的样式指南。通常在C#方法中以大写字母开头,并且每个新单词都是有资本的,例如ReadRandomValues。不是read_random_values。