原文链接:https://blog.csdn.net/Jeffxu_lib/article/details/96425138
在 C# 中,当主函数调用另一个非静态函数时总是提示: “ 对象引用对于非静态的字段、方法或属性是必需的 ”
一、错误分析
1、因为 f02() 是非静态函数;而主函数 Main 前有关键字 static ,其为静态函数。所以当静态函数调用非静态函数时,会出现如上所示的错误。
2、C# 的类的静态方法规定:类中静态的方法、成员函数只能访问静态的数据成员或者静态的方法。 使用了关键字 static 代表是静态方法,该静态方法只能调用外面其他的静态函数或静态变量(对于外部的非静态函数或变量,都不能调用)。
二、解决方法
方法一:在被调用的非静态函数或变量前加 static 关键字,将其变成静态方法或变量。以被静态函数调用。
方法二:将被调用的函数封装在另一个类中,然后在主调函数中对被调函数所在的类进行实例化,通过该实例化的对象来对该方法进行调用。此时被调函数前就不需要再加 static 关键字。
【总结】:“static修饰的函数或变量都是在类初始化的时候加载的,而非静态的变量都是在对象初始化的时候加载。”
三、static 用法拓展
1、在一个类中,由 static 修饰的方法或变量,如果在别的类中进行调用时,只能通过类名来进行访问。
2、当构造对象的时候,对象中只包含普通字段,不包含静态字段。