公共静态类与静态类

本文关键字:静态类 | 更新日期: 2023-09-27 18:31:52

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

static class ZedGraphHelper
{
    public static ZedGraph.ZedGraphControl GetZedGraph(Guid config, Guid equip)
    { throw new NotImplementedException; }
    //This method here is the faulty one
    public static void AdjustGraphParam(ZedGraph.ZedGraphControl zGraph, RP.mgrRPconfigGraph mgr)
    { throw new NotImplementedException; }
    public static void FillGraph(ZedGraph.ZedGraphControl zGraph, Guid config, Guid equip, Guid form)
    { throw new NotImplementedException; }
    public static void FillGraph(ZedGraph.ZedGraphControl zGraph,  Shadow.dsEssais.FMdocDataTable dtDoc, Shadow.dsEssais.FMchampFormDataTable dtChamp)
    { throw new NotImplementedException; }
    public static void LoadDoc(Shadow.dsEssais.FMdocDataTable dtDoc, Guid equip, Guid form)
    { throw new NotImplementedException; }
    public static double LoadDonnee(Guid champ, Guid doc)
    { throw new NotImplementedException; }
    public static SqlDataReader ReadDonnee(Guid champ, Guid doc)
    { throw new NotImplementedException; }
}

此代码编译良好,没有设置错误。如果我将类声明从

static class ZedGraphHelper

public static class ZedGraphHelper

我收到以下错误消息:Inconsistent accessibility: parameter type 'RP.mgrRPconfigGraph' is less accessible than method 'Shadow.ZedGraphHelper.AdjustGraphParam(ZedGraph.ZedGraphControl, RP.mgrRPconfigGraph)'此方法存在于我在此处包含的类声明中。该方法public static void .

为什么我会收到此错误?公众是否改变了代码行为中的任何内容?

公共静态类与静态类

是的,RP.mgrRPconfigGraph 是一种内部类型(或比这更难访问)。因此,当您将ZedGraphHelper更改为public时,它会将其方法公开为公共方法,这些方法都标记为public。你不能为AdjustGraphParam方法做,因为参数是internal type

要么使方法成为内部方法

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

或者将RP.mgrRPconfigGraph类型标记为公共

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

如果将类更改为公共类,则会收到此错误,因为类中存在的方法参数之一是内部类型。

这意味着您的类

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