2016-03-23 30 views
0

Bu iki FiniteStateMachine.AddState() yönteminden hangisinin diğerinden daha iyi olduğunu bilmek istiyorum; örneğin, bir kutulama/kutulama gerektiriyor mu? veya her ikisini de kutulama/kutulama gerektirir mi? ve eğer biri diğerinden daha iyi ise, hangisi? IState yanaBu yaklaşımlardan hangisi daha iyi veya aynı mı?

public interface IState 
{ 
    string Name { get; set; } 
} 

public sealed class FiniteStateMachine 
{ 
    private Dictionary<string, IState> allStates = new Dictionary<string, IState>(); 

    public void AddState<TState>(TState newState) where TState : IState 
    { 
     allStates.Add(newState.Name, newState); 
    } 

    public void AddState(IState newState) 
    { 
     allStates.Add(newState.Name, newState); 
    } 
} 

public class EnemySoldierSword_TakingHitState : IState 
{ 
    public string Name { get; set; } 

    public EnemySoldierSword_TakingHitState(string name) 
    { 
     Name = name; 
    } 
} 

    public class Program 
{ 
    public var FSM = new FiniteStateMachine(); 
    FSM.AddState(new EnemySoldierSword_ChasingState("ChasingState")); 
} 

cevap

0

boks meydana geldiği tek fark bu yüzden boks kaçınamaz bir başvuru türüdür. TState bir değer türü ise, allStates.Add çağıran gerçekleşir aksi takdirde AddState yöntemini çağırarak olur.

+0

Gördüğünüz gibi, bir fark var, ama bu bağlamda bu fark önemli değil, bildiğim çok şey sayesinde teşekkürler, teşekkürler – Lunatrap