好吧,我在stackoverflow上读了一下这个主题,看了这个&这个,但仍然有点混淆co/contra-variance.
从这里开始
协方差允许在API中替换"更大"(更不具体)类型,其中原始类型仅用于"输出"位置(例如,作为返回值).逆变量允许在API中替换"较小"(更具体)类型,其中原始类型仅用于"输入"位置.
我知道它与类型安全有关.
关于这in/out件事.我可以说in当我需要写它时,我会使用它,out当它只读它时.并且in意味着反方差,out协方差.但从上面的解释......
与此
例如,a
List<Banana>不能被视为List<Fruit>因为list.Add(new Apple())对List有效但不适用于List<Banana>.
所以不应该是,如果我要使用in/我要写入对象,它必须更大更通用.
我知道这个问题已经被问到但仍然很困惑.