Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 公共静态类与静态类_C#_Access Modifiers - Fatal编程技术网

C# 公共静态类与静态类

C# 公共静态类与静态类,c#,access-modifiers,C#,Access Modifiers,假设我有这个类,并且所有方法都得到了正确的实现(在这种情况下,我认为实现与问题无关) 这段代码编译得很好,没有设置错误。如果我将类声明从 static class ZedGraphHelper 到 我收到以下错误消息:不一致的可访问性:参数类型'RP.mgrRPconfigGraph'的可访问性不如方法'Shadow.ZedGraphHelper.AdjustGraphParam(ZedGraph.ZedGraphControl,RP.mgrRPconfigGraph)我刚才包含的类声明中存在

假设我有这个类,并且所有方法都得到了正确的实现(在这种情况下,我认为实现与问题无关)

这段代码编译得很好,没有设置错误。如果我将类声明从

static class ZedGraphHelper

我收到以下错误消息:
不一致的可访问性:参数类型'RP.mgrRPconfigGraph'的可访问性不如方法'Shadow.ZedGraphHelper.AdjustGraphParam(ZedGraph.ZedGraphControl,RP.mgrRPconfigGraph)
我刚才包含的类声明中存在此方法。该方法是
公共静态void


为什么我会犯这个错误?公众是否改变了代码行为?

RP.mgrRPconfigGraph
是一种内部类型(或者比它更难访问)。因此,当您将
ZedGraphHelper
更改为
public
时,它将其方法公开为public,这些方法都标记为
public
。由于参数是
内部类型

或者将该方法设置为内部

internal static void AdjustGraphParam(ZedGraph.ZedGraphControl zGraph, RP.mgrRPconfigGraph mgr)
{ throw new NotImplementedException; }

或者将
RP.mgrRPconfigGraph
类型标记为public

类的默认访问修饰符为
内部
。 这意味着,如果省略访问修饰符,该类将是内部的

如果将类更改为public,则会出现此错误,因为类中存在的方法的参数之一是内部类型


这意味着您的类不能是公共的,因为它依赖于内部类型,而内部类型比您的类更难访问。(内部类型只能在声明它的程序集中使用,而公共类可以在任何地方使用)。

RP.mgrRPconfigGraph
必须是公共类型。@MuctadirDinar没有任何关键字默认的可访问性是
受保护的
?在我的情况下,我认为比public关键字更重要的是不狂欢对不起。我意识到我的评论完全是话题。简单地说,如果将
ZedGraphHelper
类设置为公共,则
RP.mgrRPconfigGraph
必须是公共的,才能将其用作
public
方法的参数。对于名称空间中的类型,默认可访问性为
internal
,否则为
private
public static class ZedGraphHelper
internal static void AdjustGraphParam(ZedGraph.ZedGraphControl zGraph, RP.mgrRPconfigGraph mgr)
{ throw new NotImplementedException; }