在 C# 中,当主函数调用另一个非静态函数时总是提示: “ 对象引用对于非静态的字段、方法或属性是必需的 ”
一、错误分析
1、因为 f02() 是非静态函数;而主函数 Main 前有关键字 static ,其为静态函数。所以当静态函数调用非静态函数时,会出现如上所示的错误。

2、C# 的类的静态方法规定:类中静态的方法、成员函数只能访问静态的数据成员或者静态的方法。 使用了关键字 static 代表是静态方法,该静态方法只能调用外面其他的静态函数或静态变量(对于外部的非静态函数或变量,都不能调用)。
二、解决方法
方法一:在被调用的非静态函数或变量前加 static 关键字,将其变成静态方法或变量。以被静态函数调用。
方法二:将被调用的函数封装在另一个类中,然后在主调函数中对被调函数所在的类进行实例化,通过该实例化的对象来对该方法进行调用。此时被调函数前就不需要再加 static 关键字。
【总结】:“static修饰的函数或变量都是在类初始化的时候加载的,而非静态的变量都是在对象初始化的时候加载。”
三、static 用法拓展
1、在一个类中,由 static 修饰的方法或变量,如果在别的类中进行调用时,只能通过类名来进行访问。
2、当构造对象的时候,对象中只包含普通字段,不包含静态字段。
参考资料:
本文解析了C#中静态方法调用非静态方法时出现的错误原因,并提供了两种解决策略:一是将非静态方法转为静态;二是通过实例化对象来调用非静态方法。同时,文章还介绍了static关键字的使用场景及其限制。
2万+

被折叠的 条评论
为什么被折叠?



