相关疑难解决方法(0)

C#:System.Object vs Generics

我很难理解何时使用Object(装箱/拆箱)与何时使用泛型.

例如:

public class Stack 
{
    int position;
    object[] data = new object[10];
    public void Push (object o) { data[position++] = o; }
    public object Pop() { return data[--position]; }
}
Run Code Online (Sandbox Code Playgroud)

VS.

public class Stack<T>
{ 
  int position; 
  T[] data = new T[100]; 
  public void Push(T obj)  {data[position++] = obj; }
  public T Pop() { return data[--position]; }
 }
Run Code Online (Sandbox Code Playgroud)

我应该使用哪一个以及在什么条件下?看起来像System.Object方式,我可以拥有当前生活在我的堆栈中的各种类型的对象.那么这总是不可取的吗?谢谢!

c# generics object

26
推荐指数
5
解决办法
1万
查看次数

为什么不总是使用泛型?

我正在阅读有关仿制药的现有帖子.如果Generics有很多优点,如Type安全,没有装箱/拆箱的开销,而且速度很快,为什么不总是使用呢?为什么要使用非通用对象呢?

编辑(问题进一步扩展如下)

我有点困惑.几个月前我读到Generics的最后一次,我读到如果参数中的Type是可变的,那么应该使用Generic来防止错误.但我现在正在阅读的内容是,泛型将实现限制为固定类型,而非泛型对象允许您在运行时定义参数类型.

请帮我看看我错过了什么?

其次,在团队中工作并且代码可共享时,在适当的OOP设计(泛型等)中使用这些类型的构造会很有帮助.对于一个规模较小的独立程序员,谁知道Type必须参与哪个类型,似乎没有必要担心,使用Generic或Non-Generic类型之间差别不大.这准确吗?

.net generics

10
推荐指数
1
解决办法
1492
查看次数

标签 统计

generics ×2

.net ×1

c# ×1

object ×1