Generics 这些方法中哪一种更好或是相同的?
我想知道这两个Generics 这些方法中哪一种更好或是相同的?,generics,methods,types,interface,unboxing,Generics,Methods,Types,Interface,Unboxing,我想知道这两个finiteTestMachine.AddState()方法中哪一个比另一个好,例如,其中一个方法需要拆箱/装箱吗?或者两者都需要拆箱/装箱?如果其中任何一个比另一个好,哪一个 public interface IState { string Name { get; set; } } public sealed class FiniteStateMachine { private Dictionary<string, IState> allStates
finiteTestMachine.AddState()
方法中哪一个比另一个好,例如,其中一个方法需要拆箱/装箱吗?或者两者都需要拆箱/装箱?如果其中任何一个比另一个好,哪一个
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"));
}
公共接口IState
{
字符串名称{get;set;}
}
公共密封类有限测试机
{
私有字典allStates=新字典();
public void AddState(TState newState),其中TState:IState
{
添加(newState.Name,newState);
}
public void AddState(IState newState)
{
添加(newState.Name,newState);
}
}
公共级敌人之剑:IState
{
公共字符串名称{get;set;}
公敌索尔迪埃剑_TakingHitState(字符串名称)
{
名称=名称;
}
}
公共课程
{
public var FSM=新的FiniteStateMachine();
FSM.AddState(新的敌人索尔德斯沃夫·查辛斯塔(“查辛斯塔”);
}
由于IState
是一种引用类型,因此无法避免装箱,因此唯一的区别在于装箱发生的位置。如果TState
是一种值类型,那么它将在调用allStates时发生。Add
否则它将在调用AddState
方法时发生。我明白了,所以有区别,但这种区别在本文中并不重要,非常感谢这正是我想知道的,谢谢