C# static关键字—— 对象引用对于非静态字段、方法或属性是必需的
原文链接:https://blog.csdn.net/Jeffxu_lib/article/details/96425138
在 C# 中,当主函数调用另一个非静态函数时总是提示: “ 对象引用对于非静态的字段、方法或属性是必需的 ”
一、错误分析
1、因为 f02() 是非静态函数;而主函数 Main 前有关键字 static ,其为静态函数。所以当静态函数调用非静态函数时,会出现如上所示的错误。
2、C# 的类的静态方法规定:类中静态的方法、成员函数只能访问静态的数据成员或者静态的方法。 使用了关键字 static 代表是静态方法,该静态方法只能调用外面其他的静态函数或静态变量(对于外部的非静态函数或变量,都不能调用)。
二、解决方法
方法一:在被调用的非静态函数或变量前加 static 关键字,将其变成静态方法或变量。以被静态函数调用。
方法二:将被调用的函数封装在另一个类中,然后在主调函数中对被调函数所在的类进行实例化,通过该实例化的对象来对该方法进行调用。此时被调函数前就不需要再加 static 关键字。
【总结】:“static修饰的函数或变量都是在类初始化的时候加载的,而非静态的变量都是在对象初始化的时候加载。”
三、static 用法拓展
1、在一个类中,由 static 修饰的方法或变量,如果在别的类中进行调用时,只能通过类名来进行访问。
2、当构造对象的时候,对象中只包含普通字段,不包含静态字段。
分类:
疑难杂症
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了