C# 捕捉变量上升沿和下降沿:使用委托和事件
在 C# 中,可以通过使用委托和事件来捕捉一个变量的上升沿和下降沿。
首先,定义一个委托来处理上升沿和下降沿的事件:
public delegate void EdgeEventHandler(object sender, EdgeEventArgs e);
然后,定义一个包含事件的类,用于触发上升沿和下降沿的事件:
public class EdgeDetector
{
private bool _previousValue;
public event EdgeEventHandler RisingEdge;
public event EdgeEventHandler FallingEdge;
public void DetectEdge(bool currentValue)
{
if (currentValue && !_previousValue)
{
// 触发上升沿事件
OnRisingEdge(new EdgeEventArgs(currentValue));
}
else if (!currentValue && _previousValue)
{
// 触发下降沿事件
OnFallingEdge(new EdgeEventArgs(currentValue));
}
_previousValue = currentValue;
}
protected virtual void OnRisingEdge(EdgeEventArgs e)
{
RisingEdge?.Invoke(this, e);
}
protected virtual void OnFallingEdge(EdgeEventArgs e)
{
FallingEdge?.Invoke(this, e);
}
}
接下来,定义一个包含事件处理程序的类,用于处理上升沿和下降沿的事件:
public class EdgeEventHandlerClass
{
private EdgeDetector _edgeDetector;
public EdgeEventHandlerClass()
{
_edgeDetector = new EdgeDetector();
_edgeDetector.RisingEdge += OnRisingEdge;
_edgeDetector.FallingEdge += OnFallingEdge;
}
private void OnRisingEdge(object sender, EdgeEventArgs e)
{
Console.WriteLine('上升沿事件触发,当前值为:' + e.CurrentValue);
}
private void OnFallingEdge(object sender, EdgeEventArgs e)
{
Console.WriteLine('下降沿事件触发,当前值为:' + e.CurrentValue);
}
public void DetectEdge(bool currentValue)
{
_edgeDetector.DetectEdge(currentValue);
}
}
最后,可以使用上述类来捕捉一个变量的上升沿和下降沿:
EdgeEventHandlerClass edgeEventHandlerClass = new EdgeEventHandlerClass();
edgeEventHandlerClass.DetectEdge(false); // 检测下降沿
edgeEventHandlerClass.DetectEdge(true); // 检测上升沿
当变量的值从false变为true时,会触发上升沿事件,输出结果为:'上升沿事件触发,当前值为:True'。当变量的值从true变为false时,会触发下降沿事件,输出结果为:'下降沿事件触发,当前值为:False'。
原文地址: https://www.cveoy.top/t/topic/bSF0 著作权归作者所有。请勿转载和采集!