C#中向窗体构造函数传入GameClass实例时出现可访问性不一致错误
解决C#中构造函数参数的"Inconsistent accessibility"错误
你遇到的这个错误:
Inconsistent accessibility: parameter type 'GameClass' is less accessible than method 'frmGame.frmGame(GameClass)'
本质是访问权限不匹配导致的,我来给你掰扯清楚:
- 你的
frmGame构造函数是public的,意味着外部代码(比如你上一个窗体的btnStart_Click事件)可以直接调用它 - 但你用来当参数的
GameClass,定义的时候没加public修饰符——C#里类默认的访问级别是internal,只能在当前程序集内部访问
这就矛盾了:外部代码能调用这个public构造函数,却看不到构造函数要求的参数类型,编译器肯定要报错阻止这种情况。
修复方法超简单:
把GameClass的定义从默认的:
class GameClass { // 你的类成员逻辑 }
改成带public修饰符的:
public class GameClass { // 你的类成员逻辑 }
这样GameClass的访问级别就和public的构造函数完全匹配了,编译器的错误提示直接就消失了,你之前的代码逻辑也能正常跑起来。
顺便提个小知识点:
C#的访问修饰符规则里,有一条核心原则:公开的成员(方法、构造函数等)不能依赖比它访问级别更低的类型。简单说就是,你对外暴露的方法,要求的参数、返回值,必须是外部代码也能访问到的类型,不然调用者根本不知道怎么用这个方法。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

