gpt4 book ai didi

c# - 我是新来的代表,想知道如何分解以下代码

转载 作者:行者123 更新时间:2023-11-30 19:35:53 27 4
gpt4 key购买 nike

我有以下代码,想知道如何分解它?它工作得很好,但是由一位大师写的,超出了我的理解范围。提前感谢您的帮助。

代码主要是将发送和接收的设备信息写入GUI。它似乎具有基于设备创建的事件,并且还调用了 GUI 内容。

  1. 为什么需要调用?
  2. 我想我想知道这是否过于复杂或合适?完成相同任务的更好方法是什么?
  3. 我也想知道“delegate { };”是什么是吗?

public event EventHandler CommunicationPerformed = delegate { };

    SerialPort _port;
readonly int _delay = 100;


private string ReadAndUpdateStatus()
{
string read = _port.ReadExisting();
CommunicationPerformed?.Invoke(this, new LoaderReadWriteEventArgs(read, LoaderCommunicationDirection.Read));
return read;
}

private void WriteAndUpdateStatus(string data)
{
if (!data.StartsWith("//")) //ignore "Comment" lines but show them on the GUI to read
_port.Write(data);
CommunicationPerformed?.Invoke(this, new LoaderReadWriteEventArgs(data, LoaderCommunicationDirection.Write));
}



public class LoaderReadWriteEventArgs : EventArgs
{
public LoaderCommunicationDirection Direction { get; }

public string Value { get; }

public LoaderReadWriteEventArgs(string value, LoaderCommunicationDirection direction)
{
Value = value;
Direction = direction;
}
}

public enum LoaderCommunicationDirection
{
Read,
Write
}

最佳答案

你问了三个问题,和往常一样,只有一个得到了回答。尝试在你的问题中只问一个问题。

I'm also wondering what the delegate { } does?

  public event EventHandler CommunicationPerformed = delegate { };

正如其他回答所指出的,事件在 C# 中默认为 null。此技术使事件处理程序什么都不做,但不是null

不幸的是,C# 中的匿名函数有很多语法。 delegate {} 的意思是“给我一个什么都不做的函数,它匹配任何返回 void 的非 ref-out 形式参数列表”。这就是人们使用delegate{} 的原因,因为它几乎可以在需要事件处理程序的上下文中的任何地方工作。

关于c# - 我是新来的代表,想知道如何分解以下代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50537417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com