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

创建C#方法需要多少开销?,c#,C#,我对C#仍然是新来的,所以请容忍我 如果我想运行一个只有2个参数的简单算法,在其他语言中,我只需在我的main()之外创建一个函数。相反,在C#中,显然我需要创建一个类并将函数(方法)放在该类中,并使该方法为静态的,以便为运行时编码,而不必创建该类的实际对象,对吗 如果所有这些都是真的,那么它会不会产生很多开销,因为您正在创建对某个对象的引用?在c中,它们被称为方法,而不是函数 但是,是的,如果您不想创建一个新类,而只是直接从Main()调用一个方法,那么您将在与Main相同的类中创建一个静态方

我对C#仍然是新来的,所以请容忍我

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

如果所有这些都是真的,那么它会不会产生很多开销,因为您正在创建对某个对象的引用?

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

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


至于开销,我认为您不应该花费太多时间来担心,除非您正在构建某种设备驱动程序。

您的其他语言也有引用。也许他们只是对你隐瞒了


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

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

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

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


一般来说,你不应该担心它,除非它对你的应用程序至关重要。

除非你正在编写非常非常小的程序,否则你总是需要使用几个类(静态或非静态)。我敦促您以一种结构良好、易于理解和干净的编程风格为目标,而不是试图在这里或那里节省一纳秒

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

是的,没错

2) 将其设置为静态,以便为运行时编码,而不必 创建类的实际对象,对吗

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

3) 既然您正在创建一个引用,这不会产生开销吗 什么事

没有。程序中的所有内容都存在于某个地方。在C#中,“某处”总是碰巧在一个或多个“类”中。你使用的每件东西都有一个“参考”(相当于一个“地址”)。您肯定没有创建任何“额外的”,当然也没有“运行时惩罚”


“希望这有助于。。。至少有一点…:)

什么?具体指什么?