Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态或实例方法在.NET中的扩展性更好吗? 在.NET中,静态类中的静态方法和常规类中关于可伸缩性的实例方法之间是否存在问题?_C#_.net - Fatal编程技术网

C# 静态或实例方法在.NET中的扩展性更好吗? 在.NET中,静态类中的静态方法和常规类中关于可伸缩性的实例方法之间是否存在问题?

C# 静态或实例方法在.NET中的扩展性更好吗? 在.NET中,静态类中的静态方法和常规类中关于可伸缩性的实例方法之间是否存在问题?,c#,.net,C#,.net,如果对一个类中的静态方法进行多次调用,是否会出现“日志阻塞”?或者这不是一个问题。如果是这样,使用实例方法会更好吗 类似于调用GetCustomers()这样的方法来检索客户数据 编辑: 问题不在于调用其他问题/答案中提到的每种方法的性能,而在于可伸缩性。如果静态方法和实例方法每秒有10K次调用,静态方法会有问题吗?或者这无关紧要。不;这不会有任何真正的区别 如果方法不依赖于一个实例,那么它们应该是静态的。如果方法依赖于一个特定的对象实例,那么静态方法和实例方法在性能上应该没有区别。如果不需要实

如果对一个类中的静态方法进行多次调用,是否会出现“日志阻塞”?或者这不是一个问题。如果是这样,使用实例方法会更好吗

类似于调用GetCustomers()这样的方法来检索客户数据

编辑:
问题不在于调用其他问题/答案中提到的每种方法的性能,而在于可伸缩性。如果静态方法和实例方法每秒有10K次调用,静态方法会有问题吗?或者这无关紧要。

不;这不会有任何真正的区别


如果方法不依赖于一个实例,那么它们应该是静态的。

如果方法依赖于一个特定的对象实例,那么静态方法和实例方法在性能上应该没有区别。如果不需要实例,静态方法可能会稍微快一点

这样做的原因是,在内部,实例方法的处理方式与采用实例参数的静态方法几乎相同。因此,应该没有可测量的差异

不需要实例的静态方法几乎肯定会更快,尽管速度很小。如果调用具有相同参数的实例方法和静态方法,实例方法将需要一个额外的参数推送到堆栈:要操作的实例


通常,将非实例特定的方法设置为静态是一个好主意,尽管这样做的速度好处很小。如果您需要了解差异,您可以对其进行分析,尽管我猜会有一个小的信噪比,您可能不会学到任何有用的东西。

lt真的没关系。重要的是方法是否需要访问类的特定实例的状态。如果不是,你可以使它静止,如果不是,你不能。如果您严格按照理论要求,那么假设该方法不需要访问实例状态数据,那么显然静态方法有一个小小的优势,因为您不必在堆上创建无用的对象来使用它。。。如果将其作为实例方法,则必须创建一个实例(仅一个实例,因为它不需要任何状态数据,哪个实例或实例的状态是什么并不重要)-仅一个实例,无论您需要调用它多少次


但一个典型规模的类上的一个实例并不是一个沉重的打击。。。假设这个类(类型)不占用3g的堆空间

小建议。。你写的第一句话是错的。。。我想说,如果方法依赖于一个特定的对象实例,那么静态方法和实例方法之间有着巨大的区别…-静态方法将不会编译。。。