错误CS0122:“ XXX”由于其保护级别(CS0122)而无法访问(测试)

时间:2019-01-31 21:56:15

标签: c# class

这是我的项目。我想在program.cs文件中调用delete_created_pa​​ge文件代码,但是出现一些错误。

附上我的图片。 https://plus.google.com/u/0/photos/photo/103928744837695537992/6652781093994177394

  

“ DeleteCreatedPage.MainDeletePage()”由于其保护级别而无法访问

请帮帮我。我是C#的初学者,正在使用monodevelop和使用Ubuntu 18.04 OS

这是Delete_created_pa​​ge.cs文件

namespace DeletePage
{
    public class DeleteCreatedPage
    {
        static void MainDeletePage()
        {
            //Initialize TestName and ToolName. 
            string testName = "delete_page";
            string toolName = "editor";
            // Calling necessary classes
       }
    }
}

这是Program.cs文件

namespace ProgramList
{
    public class MainClass
    {
        static void Main(string[] args)
        {
            DeletePage.DeleteCreatedPage del = new DeletePage.DeleteCreatedPage();
            del.MainDeletePage();
        }
    }
}

4 个答案:

答案 0 :(得分:2)

这里有很多问题。

首先,如果未明确定义该方法,则将其设置为可以限制的最高级别,例如internalprivate。您希望它是公开的,因此请确保包括在内。

第二个问题是它是static,这意味着它不是通过实例化的对象访问的,而是直接通过类调用的,就像DeleteCreatedPage.MainDeletePage()一样。如果您希望该方法与特定DeleteCreatedPage对象的类成员一起使用,请删除static。如果希望该方法对每个对象使用相同的值,请在该位置保留静态。

因此,您有两种方法可以解决此特定问题。

将方法定义更改为此

public void MainDeletePage()

或更改其调用方式(同时仍将public添加到方法定义中)

DeleteCreatedPage.MainDeletePage()

答案 1 :(得分:0)

如果您尝试调用MainDeletePage,则必须将其标记为public,以便其他班级可以看到它。因此,请尝试使用static void MainDeletePage()而不是public static void MainDeletePage()。默认情况下,如果C#没有显式定义其作用域,则默认为方法的私有作用域。私有方法只能由定义它们的类访问。

答案 2 :(得分:0)

这是因为MainPageDelete不是公开的,因此您需要这样编写。类成员的默认可访问性修饰符是私有的,因此在类外部无法访问。

public static void MainDeletePage()
    {
        //Initialize TestName and ToolName. 
        string testName = "delete_page";
        string toolName = "editor";
        // Calling necessary classes
   }

答案 3 :(得分:0)

现在,当我在delete_created_pa​​ge文件中编写此文件时,它可以工作。

m

在program.cs文件中将此方法称为

public void MainDeletePage()