c#静态和非静态方法之间的差异是什么?

yos*_*ssi 1 c# overloading

在这段代码中,静态函数和非静态函数之间是否存在差异?

而且,除了静态函数属于对象而不属于实例之外,还有更多差异吗?

public class ClassName
{
   public void f1(SomeObject n)
   {
      n.someProperty = 1;
   }
   public static void f1(ref SomeObject n)
   {
      n.someProperty = 1;
   }
}
Run Code Online (Sandbox Code Playgroud)

重复?是的,所以看来.请注意,在另一个问题中,没有答案可以解决问题本身.

Jcl*_*Jcl 5

除了你已经提到的那些:不,没有区别.事实上,不会真正影响(或需要知道相同对象的实例状态)的函数应该是首选的静态函数(至少会减少对象的每个实例的内存占用量) .

更新

现在我想到了它,我认为它不会真正影响内存占用.那么看起来更好看,"设计明智"

只是添加,如果一个方法(如上所述)不需要对象的实例,"设计明智",它应该更好作为静态.如果有的话,因为你不必实例化一个对象来使用它.

  • @rossipedia这是对的,我花了几分钟思考它.字段会,但不是方法. (2认同)