// boiler 类 class Boiler { private int temp; private int pressure; public Boiler(int t, int p) { temp = t; pressure = p; }
public int getTemp() { return temp; } public int getPressure() { return pressure; } } // 事件发布器 class DelegateBoilerEvent { public delegate void BoilerLogHandler(string status);
// 基于上面的委托定义事件 public event BoilerLogHandler BoilerEventLog;
public void LogProcess() { string remarks = "O. K"; Boiler b = new Boiler(100, 12); // 创建一个Boiler对象,100温度 12 压力 int t = b.getTemp(); // t是温度 int p = b.getPressure(); // p是压力 if (t > 150 || t < 80 || p < 12 || p > 15) { remarks = "Need Maintenance"; } OnBoilerEventLog("Logging Info:\n"); OnBoilerEventLog("Temparature " + t + "\nPressure: " + p); OnBoilerEventLog("\nMessage: " + remarks); }
protected void OnBoilerEventLog(string message) { if (BoilerEventLog != null) { BoilerEventLog(message); } } } // 该类保留写入日志文件的条款 class BoilerInfoLogger { FileStream fs; StreamWriter sw; public BoilerInfoLogger(string filename) { fs = new FileStream(filename, FileMode.Append, FileAccess.Write); sw = new StreamWriter(fs); } public void Logger(string info) { sw.WriteLine(info); } public void Close() { sw.Close(); fs.Close(); } } // 事件订阅器 public class RecordBoilerInfo { static void Logger(string info) { Console.WriteLine(info); }//end of Logger
static void Main(string[] args) { BoilerInfoLogger filelog = new BoilerInfoLogger("d:\\boiler.txt"); DelegateBoilerEvent boilerEvent = new DelegateBoilerEvent(); boilerEvent.BoilerEventLog += new DelegateBoilerEvent.BoilerLogHandler(Logger); // 打印到控制台的logger boilerEvent.BoilerEventLog += new DelegateBoilerEvent.BoilerLogHandler(filelog.Logger); // 打印到文件的logger boilerEvent.LogProcess(); Console.ReadLine(); filelog.Close(); }//end of main
}//end of RecordBoilerInfo }
我看了半天这个boilerEvent.BoilerEventLog += new ,没懂什么几把意思
然后突然想到这里没有分号,他是缩进!他是缩进!他是缩进!
其实应该是
boilerEvent.BoilerEventLog += new DelegateBoilerEvent.BoilerLogHandler(Logger);
太过分了,于是水一篇文
无独有偶,这网站还有一篇代码很逆天
using System; using System.IO;
namespace FileApplication { class Program { static void Main(string[] args) { try { // 创建一个 StreamReader 的实例来读取文件 // using 语句也能关闭 StreamReader using (StreamReader sr = new StreamReader("c:/jamaica.txt", Encoding.UTF8)) { string line; // 从文件读取并显示行,直到文件的末尾 while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // 向用户显示出错消息 Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } Console.ReadKey(); } } }
这里如果你用microsoft visual studio 2022手动输入这一行 using (StreamReader sr = new StreamReader("c:/jamaica.txt", Encoding.UTF8))