Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                                                                                            
                
        
考虑这样的类:

class Foo<T>
{
   private T myField;
   public void Set(T x)
   {
      myField = x;
   }
}


然后使用等于Tint(值类型)和boolStringList实例化它。

实例化将如何创建?外观如何?

我对Java和C#感兴趣。

从我的阅读中,Java会创建一个具有基本类型转换的通用类,而在C#中,intbool将有两个类,而StringList将有一个类,因为它们是参考值(这是真的吗?静态字段呢?)。

最佳答案

注意这里我假设是常规的CLR-没有AOT等。

在IL级别:Foo<T>有一个定义;无论T,IL都是相同的(共享的)。

在JIT级别:对每个(共享的)引用类型参数(每个通用参数)一次对类型进行jitted,对每个(单独的)值类型参数进行一次jited。因此,Foo<string>Foo<List<...>>的JIT是共享的,而Foo<int>Foo<bool>的每个JIT都是单独的。

创建的对象/实例的数量与new Foo<...>(...)调用(或Activator.CreateInstance(...)等)的数量相同。

10-07 19:32
查看更多