[英]Field “actions” gets value without assignment
我有 2 個類: ActionsFromQuestsController、ActionsComposer
ActionsFromQuestsController 生成Action類型的數據並將其保存到字段操作
ActionsComposer有actionsState、actions字段
actionsState 從 ActionsFromQuestsController 獲取新值並檢查它是否與操作字段不同
如果為真,則用新值填充動作,如果不是,則獲取動作值以防止重載
private void Update() { actionsState.AddRange(actionsFromQuestsController.Actions); if (actionsState.Except(actions).Any()) { Debug.Log("Composing actions"); ComposeActions(); } else { actionsState = actions; } Debug.Log(actionsState.Count); Debug.Log(actions.Count); } private void ComposeActions() { actions.AddRange(actionsFromQuestsController.Actions); WriteActionsToConfig(actions); }
但不知何故,我的操作字段在沒有評估 ComposeActions 方法的情況下獲得了最新操作。 並且代碼中沒有其他賦值
所有字段的類型均為List<Action>
盡管您沒有顯示ActionsComposer
構造函數的代碼,但我懷疑正在使用類似代碼初始化actions
,例如:
private List<Action> actions;
private ActionsFromQuestsController actionsFromQuestsController;
public ActionsComposer(ActionsFromQuestsController actionsFromQuestsController)
{
this.actionsFromQuestsController = actionsFromQuestsController;
this.actions = actionsFromQuestsController.Actions;
}
通過直接從actionsFromQuestsController.Actions
初始化actions
,您實際上是在設置對actionsFromQuestsController.Actions
的引用,這將反映對每個List
的任何更改。
這可以通過使用List
的新實例初始化actions
來解決,例如:
private List<Action> actions;
private ActionsFromQuestsController actionsFromQuestsController;
public ActionsComposer(ActionsFromQuestsController actionsFromQuestsController)
{
this.actionsFromQuestsController = actionsFromQuestsController;
this.actions = new List<Action>(actionsFromQuestsController.Actions);
}
這將從actionsFromQuestsController.Actions
中獲取初始值,但不再是彼此的引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.