C#遇到的坑

来源:互联网 发布:设置了淘宝客佣金 编辑:程序博客网 时间:2024/06/05 10:07

1、string.Replace方法返回替换后的字符串,所以使用的时候要用:

string str = "";str = str.Replace("old", "new");

否则得不到期待的结果。

2、看下面的代码:

PlotWnd.Instance.InitPlotTalkData(int.Parse(NewBattleSelectWnd.battleID), 3, 10);PlotWnd.Instance.UpdateTalkInformation();<pre name="code" class="csharp">PlotWnd.Instance.SetProcessOtherThingWhenClosedHander(EnterBattleAfterPlotTalk);GameData.mPlotTalkNodeList.Add(3);LevelHelper.LevelPause(true);return;

PlotWnd是一个单例,但是在
<pre name="code" class="csharp">PlotWnd.Instance.UpdateTalkInformation();
函数里,有销毁该单例的逻辑代码,然后如果正好满足销毁条件,后面就悲剧了,正确的写法应该是:

PlotWnd.Instance.InitPlotTalkData(int.Parse(NewBattleSelectWnd.battleID), 3, 10);PlotWnd.Instance.UpdateTalkInformation();if(PlotWnd.Exist){     PlotWnd.Instance.SetProcessOtherThingWhenClosedHander(EnterBattleAfterPlotTalk);     GameData.mPlotTalkNodeList.Add(3);     LevelHelper.LevelPause(true);     return;}
当然,尽量不要在UpdateTalkInformation()函数里处理销毁逻辑,或者将有销毁逻辑的代码放到最后一个调用,但是有谁能保证呢?


0 0