c# - 全局与成员函数

标签 c# c++ memory-management

我最近一直在研究 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/

相关文章:

java - 转换在 Java 中需要多少处理和内存使用?

c# - 在 MVVM 中将值从子模型传递给父模型

C++ ostringstream 奇怪的行为

java - 我可以关闭底层输出流并让装饰器 BufferedOutputStream 未关闭吗

c++ - 在 QT Creator 中动态更改 x 和 y 坐标

c++ - 本地禁用填充

c# - 如何从代码中监控内存分配

c# - 强制泛型类型参数

c# - 如何在没有依赖关系的情况下读取 WCF 服务中的多部分/表单数据发布流

c# - 有没有一种类型化的方法来在 C# 中声明方法名称