0

我需要想出一个算法,我认为这很简单,但对于我的生活,我无法弄清楚。

我有两个字符串:

string oldData;
string newData;

这些变量最初将是空的。我需要一种方法来存储以前的数据和新的传入数据。有时传入的数据是相同的,因此不需要更改。如果新传入的数据不同,那么oldData会得到之前的newData,newData会得到新的传入数据。

4

5 回答 5

1

上面的方法可行,但如果你想让它们像一个类的属性,你可以做类似的事情

public YourClass
{

   string oldValue;
   string newValue;
   public string NewValue
   { get { return newValue; }
     set { if( ! value.Equals( newValue ))
           {
              oldValue = newValue; 
              newValue = value; 
           }
         }
   }

}

然后,您也可以在 WinForms 或 WPF 应用程序中绑定到属性。

于 2013-07-10T01:35:55.440 回答
0

你能不能不做这样的事情?

private string YourMethodNameHere(string oldValue,string newValue)
{
  if(old != newValue)
    return newValue;
  return oldValue;
}  
于 2013-07-10T01:43:41.970 回答
0

我不确定你的问题,因为它看起来很明显,但这样的事情会起作用吗?:

string oldData;
string newData;

void newStringIncoming(string myNewString)
{
   if(myNewString != newData)
   {
      oldData = newData;
      newData = myNewString;
   }
}
于 2013-07-10T01:25:43.630 回答
0

我认为它会是这样的:

void checkData(string newData) {
    if ( newData != oldData ) {
        oldData = newData;
    }
}
于 2013-07-10T01:18:26.880 回答
0

这是一个使用事件的复杂答案,它允许您添加额外的事件而不将它们粘贴在 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;
        }
    };
}
于 2013-07-10T23:32:15.840 回答