我最近一直在研究 C++,想知道为什么会有这么多全局函数。然后我开始考虑用 c# 编程以及如何存储成员函数,所以我想我的问题是我是否有:
public class Foo { public void Bar() { ... } }
然后我做了一些愚蠢的事情,比如将 1,000,000 个 Foo's 添加到列表中;这是否意味着我有 1,000,000 个 Foo 对象位于内存中,每个对象都有自己的 Bar() 函数?还是发生了更聪明的事情?
谢谢。
最佳答案
没有,只有一个例子。一个类的所有实例都指向一个对象,该对象包含所有采用隐式第一个参数的实例方法,亲切地称为 this
。当您在实例上调用实例方法时,该实例的 this
指针将作为第一个参数传递给该方法。这就是该方法了解该实例的所有实例字段和属性的方式。
有关详细信息,请参阅 CLR via C# .
当然,virtual
方法使这变得复杂。通过 C# 的 CLR 将为您阐明区别,如果您对此主题感兴趣,强烈推荐。无论哪种方式,每个实例方法仍然只有一个实例。问题在于如何解决这些方法。
关于c# - 全局与成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300737/