オブザーバーパターンとデリゲートを理解するのに役立つ必要があります。私はこのコードを別のウェブサイトで見つけたので、実際に何をしているのか理解しようとしています。誰かが私を助けることができますか?オブザーバーパターンとデリゲート
コードを実行すると、「サーバーが稼動しています」と「サーバーがダウンしています。すぐに作業しています」というメッセージが表示されます。私は、Mainにはserver.ServerStatus = trueがあるので、私は両方のメッセージを受け取っていると思います。 server.ServerStatus = falseです。しかし、server.ServerStatus = trueをコメントアウトすると、それから私は "サーバーは稼働しています"というメッセージが表示されますが、 "サーバーがダウンしています。すぐに作業を進めています。"誰か説明できますか?それは言う
server.ServerStatusChanged += new EventHandler(ProcessServerStatus);
スーザン
class Program
{
static void Main(string[] args)
{
Server server = new Server();
server.ServerStatusChanged += new EventHandler(ProcessServerStatus);
server.ServerStatus = true;
server.ServerStatus = false;
Console.Read();
}
public class Server
{
public event EventHandler ServerStatusChanged;
private bool _ServerStatus;
public bool ServerStatus
{
get { return this._ServerStatus; }
set {
if (this._ServerStatus == value) return; // Dont need to do anything;
if (this.ServerStatusChanged != null) // make sure the invocation list is not empty
ServerStatusChanged(value, new EventArgs()); // Firing Event
this._ServerStatus = value;
}
}
}
public static void ProcessServerStatus(object sender, EventArgs e)
{
bool status = (bool)sender;
if (status)
Console.WriteLine("Server is up and running");
else
Console.WriteLine("Server is down, We are working on it it will be back soon");
}
}
これはJavaでタグ付けされていますが、コードは実際はC#だと思います。 –
実際、get {} set {}はJavasではなくC#の機能です。変更されたタグ。 – Esko