Program是一个类名
Program.temperature是这个类中声明的静态变量
temperature是另一个类 AAA 中的变量我要在这个AAA实例出的对象的方法里实现累加这个写法就不对,加不了。
Program.temperature = temperature + 1这个就对
Program.temperature = ++temperature————————————————或者说
用这一句:
Program.temperature = temperature + 1
就不对
而用这二句:
temperature = temperature + 1
Program.temperature = temperature
就正确。
————————————————————--
这是为什么呀,原因出在哪里? 这里我烤过来代码源文件的一部分:namespace mydelegate
{
class Program
{
public static int temperature = 38;
public static int custemp = 25;
public static bool isStart = false; static void Main(string[] args)
{
AirConditioner airconditioner = new AirConditioner();
Displayer displayer = new Displayer();
Alarmer alarmer = new Alarmer(); Uptemper uptemper = new Uptemper();
Timer mytimer = new Timer(2000);
uptemper.OverLoadTemperatureEvent += airconditioner.Start;
uptemper.OverLoadTemperatureEvent += displayer.Display;
uptemper.OverLoadTemperatureEvent += alarmer.Alarm; mytimer.Elapsed += new ElapsedEventHandler(uptemper.Uptemp); mytimer.Start();
Console.ReadKey();
}
}
//定义模拟升温类
public class Uptemper
{
public int temperature;
public int custemp; ......
......若干代码
...... public void Uptemp(object sender,ElapsedEventArgs e)
{
custemp = Program.custemp;
temperature = Program.temperature; //用这二句做累加,成功!
//temperature = temperature + 1;
//Program.temperature = temperature ; //用这句做累加,也成功
//Program.temperature = ++ temperature //用这句做累加,就失败,Program.temperature里的值一直都加不上去。
Program.temperature = temperature + 1; //自然升温 //Console.WriteLine("随机数为{0} 加后结果{1}", x, Program.temperature);
OverLoadTemperatureEvent(temperature, custemp);
......
}
Program.temperature是这个类中声明的静态变量
temperature是另一个类 AAA 中的变量我要在这个AAA实例出的对象的方法里实现累加这个写法就不对,加不了。
Program.temperature = temperature + 1这个就对
Program.temperature = ++temperature————————————————或者说
用这一句:
Program.temperature = temperature + 1
就不对
而用这二句:
temperature = temperature + 1
Program.temperature = temperature
就正确。
————————————————————--
这是为什么呀,原因出在哪里? 这里我烤过来代码源文件的一部分:namespace mydelegate
{
class Program
{
public static int temperature = 38;
public static int custemp = 25;
public static bool isStart = false; static void Main(string[] args)
{
AirConditioner airconditioner = new AirConditioner();
Displayer displayer = new Displayer();
Alarmer alarmer = new Alarmer(); Uptemper uptemper = new Uptemper();
Timer mytimer = new Timer(2000);
uptemper.OverLoadTemperatureEvent += airconditioner.Start;
uptemper.OverLoadTemperatureEvent += displayer.Display;
uptemper.OverLoadTemperatureEvent += alarmer.Alarm; mytimer.Elapsed += new ElapsedEventHandler(uptemper.Uptemp); mytimer.Start();
Console.ReadKey();
}
}
//定义模拟升温类
public class Uptemper
{
public int temperature;
public int custemp; ......
......若干代码
...... public void Uptemp(object sender,ElapsedEventArgs e)
{
custemp = Program.custemp;
temperature = Program.temperature; //用这二句做累加,成功!
//temperature = temperature + 1;
//Program.temperature = temperature ; //用这句做累加,也成功
//Program.temperature = ++ temperature //用这句做累加,就失败,Program.temperature里的值一直都加不上去。
Program.temperature = temperature + 1; //自然升温 //Console.WriteLine("随机数为{0} 加后结果{1}", x, Program.temperature);
OverLoadTemperatureEvent(temperature, custemp);
......
}
Program.temperature = temperature + 1; //自然升温// 没有必要那么麻烦,直接这样就好了:
++Program.temperature ;
using System.Collections.Generic;
using System.Text;
using System.Timers;namespace mydelegate
{
class Program
{
public static int temperature = 38; //默认当前温度。
public static int custemp = 25; //设定的空调停机温度。
public static bool isStart = false; //存放空调的工作状态。 static void Main(string[] args)
{
AirConditioner airconditioner = new AirConditioner();
Displayer displayer = new Displayer();
Alarmer alarmer = new Alarmer(); Uptemper uptemper = new Uptemper();
Timer mytimer = new Timer(2000);
uptemper.OverLoadTemperatureEvent += airconditioner.Start;
uptemper.OverLoadTemperatureEvent += displayer.Display;
uptemper.OverLoadTemperatureEvent += alarmer.Alarm; mytimer.Elapsed += new ElapsedEventHandler(uptemper.Uptemp);
//如果空调初始状态为关,并且事件中不为空则执行定时器开始工作
mytimer.Start();
Console.ReadKey();
}
}
//定义模拟升温类
public class Uptemper
{
public int temperature;
public int custemp; public delegate void OverLoadTemperatureHandler(int temperature, int custemp);
public event OverLoadTemperatureHandler OverLoadTemperatureEvent; public void Uptemp(object sender,ElapsedEventArgs e)
{
custemp = Program.custemp;
temperature = Program.temperature; //Random myran = new Random(); //声明随机数类型变量
//int x=myran.Next(0,3); //产生随机数
//temperature = temperature + 1;
Program.temperature = temperature+1; //自然升温 //Console.WriteLine("随机数为{0} 加后结果{1}", x, Program.temperature); OverLoadTemperatureEvent(temperature, custemp);
Console.WriteLine("对象T{0} 类T{1}",temperature,Program.temperature);
}
} //定义空调器类
public class AirConditioner
{ private int t=3; //定义空调降温幅度。
private int i=5; //定义停机时间隔。 public void Start(int temperature, int custemp)
{
if (i >= 5 && (Program.isStart == false) && Program.temperature > custemp)
{ Console.WriteLine("空调已启动!");
Program.isStart = true;
i = 0;
temperature = temperature - t;
}
else if (Program.isStart == true && Program.temperature > custemp)
{ Console.WriteLine("空调正在工作...");
Program.isStart = true;
temperature = temperature - t;
} else
{
Program.isStart = false;
Console.WriteLine("空调已关闭···");
i++; } Program.temperature = temperature; //如果空调状态为关,设定温度小于当前温度则空调开始工作
//if (Program.isStart = false&&)
//{
// temperature = temperature - 2;
// OverLoadTemperatureEvent(temperature, custemp);
//} } } //定义显示器类
public class Displayer
{
public void Display(int temperature, int custemp)
{
Console.WriteLine("你设定的温度为: {0} 当前室温为: {1}", custemp, temperature);
}
}
//定义报警器类
public class Alarmer
{ public void Alarm(int temperature, int custemp)
{
if (temperature >= 38)
{
Console.WriteLine("室温太高了!!!");
}
else if (temperature > custemp)
{
Console.WriteLine("室温比较高了!");
}
else if (temperature <= custemp)
{
Console.WriteLine("<室温正常>"); }
else if (temperature <= 18)
{
Console.WriteLine("*****室温太低了*****");
} } }
}
//定义空调器类
public class AirConditioner
中的方法的最下面有一句
Program.temperature = temperature;这样Program.temperature在前面虽然被累加了,但在这里又被写回累加前的值了。我说怎么累加不上去。