创建C#方法需要多少开销?

时间:2011-12-11 17:56:20

标签: c#

我还是C#的新手,所以请耐心等待。

如果我想运行一个只有2个参数的简单算法,在其他语言中,我只需在main()之外创建一个函数。相反,在C#中,显然我需要创建一个类并将函数(方法)放在该类中,并使该方法为静态,以便为运行时编码而不必创建类的实际对象,是否正确?

如果这一切都是真的,那么它不会产生很多开销,因为你正在创建对某事物的引用吗?

5 个答案:

答案 0 :(得分:6)

在c#中,它们被称为方法,而不是函数。

但是,是的,如果你不想创建一个新类,只是直接从Main()调用一个方法,那么你将在与Main相同的类中创建一个静态方法,并从中调用它。 / p>

就开销而言,除非你正在构建某种设备驱动程序,否则我认为你不应该花太多时间担心这一点。

答案 1 :(得分:3)

无需创建其他类,您的main方法是Application类中的静态方法。您可以向此类添加一个方法并从main调用它,但该方法也必须是静态的。

如果您想利用面向对象的功能,比如成员变量,那么您需要创建一个类。这个类应该有一个方法,不需要是静态的。

静态方法不包含任何对象创建的开销,它们只是函数调用。函数有一些开销(静态或非开销),因为它们必须将对象推送到堆栈并在退出时弹出它们。但是,这种开销通常很小,只与需要最佳性能的非常紧密的循环相关。

一般情况下,除非对您的应用程序至关重要,否则不要担心。

答案 2 :(得分:2)

  

1)但是在C#中我需要创建一个类并放置函数(方法)   在里面显然,让它静止......

是的,这是正确的。

  

2)使它静止,因此它被编码为运行时而不是必须   创建一个类的实际对象,对吗?

不,不是真的。在此上下文中,“static”仅表示“类范围:独立于任何特定类实例”(“类实例”==“实例化对象”)。

  

3)这不会产生开销,因为您正在创建引用   什么?

不。你的程序中的一切都存在于某个地方。在C#中,“某处”总是碰巧在一个或多个“类”中。你使用的一切都有一个“参考”(相当于一个“地址”)。你绝对不会创造任何“额外”的东西,而且肯定没有“运行时惩罚”。

'希望这有助于...至少一点......:)

答案 3 :(得分:1)

除非您编写非常小的程序,否则您将始终必须使用多个类(静态或非静态)。我恳请你瞄准一个结构良好,易于理解和干净的编程风格,而不是试图在这里和那里节省一纳秒。

答案 4 :(得分:0)

您的其他语言也有参考。也许他们只是把它们藏起来。

实际上使用静态方法可以消耗更少的资源,因为该方法附加到类,而不是堆上的对象实例。因此,类加载器只会将一个方法放入内存中。