逻辑帮助.存储新旧传入数据
本文关键字:数据 新旧传 存储 帮助 | 更新日期: 2023-09-27 18:21:40
我需要想出一个算法,我认为它很简单,但就我的一生而言,我无法解决它。
我有两个字符串:
string oldData;
string newData;
这些变量最初将为空。我需要一种方法来存储以前的数据和新的传入数据。有时传入的数据是相同的,因此不需要进行任何更改。如果新的传入数据不同,那么oldData将获得以前的newData,newData将获得新的传入的数据。
上面的方法是可行的,但如果你想让它们像类的属性一样,你可以做一些类似的事情
public YourClass
{
string oldValue;
string newValue;
public string NewValue
{ get { return newValue; }
set { if( ! value.Equals( newValue ))
{
oldValue = newValue;
newValue = value;
}
}
}
}
然后,您也可以在WinForms或WPF应用程序中绑定到属性。
我不确定你的问题,因为它看起来很明显,但像这样的东西能起作用吗?:
string oldData;
string newData;
void newStringIncoming(string myNewString)
{
if(myNewString != newData)
{
oldData = newData;
newData = myNewString;
}
}
我想它应该是这样的:
void checkData(string newData) {
if ( newData != oldData ) {
oldData = newData;
}
}
你不能就这样做吗?
private string YourMethodNameHere(string oldValue,string newValue)
{
if(old != newValue)
return newValue;
return oldValue;
}
这里有一个使用事件的复杂答案,它将允许您添加额外的事件,而不会将它们粘贴在setter 中
public string OldData { get; set; }
private string _newData;
public string NewData
{
get { return _newData; }
set
{
if (value.Equals(_newData)) { return; }
_newData = value;
DataChanged(this, EventArgs.Empty);
}
}
private event EventHandler DataChanged;
public DataHolder()
{
DataChanged = (sender, args) =>
{
DataHolder dataHolder = sender as DataHolder;
if (dataHolder != null)
{
dataHolder.OldData = NewData;
}
};
}