请教一下,c#对象引用释放问题

请问一下,在c#里,如果方法中的参数为对象,然后引用了外部的对象,再被方法内的对象集合添加了,这个集合是这个方法所在的类的静态集合,那这个对象还是存在在堆中,只有这个集合移除了这个对象,然后这个对象才在程序运行时真正释放掉么?这个又是静态集合,静态集合只能在程序结束才能被销毁,那这个对象能完全释放要么从这个静态集合中移除要么整个程序结束,这样理解对不?

所有的对象(class)都肯定是在堆上的。只有局部变量的值类型(简单类型,比如int,或者structs,enum等)在堆栈上。