You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:39:14