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
方法时发生。

我明白了,所以有区别,但这种区别在本文中并不重要,非常感谢这正是我想知道的,谢谢