【问题标题】:C# call method of a class object inside another class objectC#调用另一个类对象内部的类对象的方法
【发布时间】:2026-01-03 09:30:03
【问题描述】:

我是 C# 新手,在调用另一个类对象内部的类对象的方法时遇到问题。我收到一条错误消息,指出“MainWindow.Mascot.MyNameIs()”由于其保护级别而无法访问。但是,所有课程都是公开的。如何从另一个对象内部调用一个对象的类方法?

谢谢!

下面是部分代码:

public partial class MainWindow : Window
{
    public class Mascot
    {
        string name;

        string MyNameIs()
        {
            return name;
        }
    }

    public class School
    {
        public Mascot myMascot;
    }

    public MainWindow()
    {
        InitializeComponent();
        School Houston = new School();
        Houston.myMascot = new Mascot();
        Houston.myMascot.MyNameIs();
    }
}

【问题讨论】:

    标签: c# object methods


    【解决方案1】:
    1. public 类并不意味着该类的成员是public;它即将进入另一个范围。 您必须附上 MyNameIs 函数的公共前端。

    试试这个。

    public partial class MainWindow : Window
    {
        public class Mascot
        {
            string name;
    
            public string MyNameIs() // changed
            {
                return name;
            }
        }
    
        public class School
        {
            public Mascot myMascot;
        }
    
        public MainWindow()
        {
            InitializeComponent();
            School Houston = new School();
            Houston.myMascot = new Mascot();
            Houston.myMascot.MyNameIs();
        }
    }
    

    【讨论】:

    • 感谢您的帮助。
    【解决方案2】:

    您的方法 MyNameIs() 的修饰符是私有的,因为您没有定义它。只需添加访问修饰符public 就像:

    public string MyNameIs()
    {
       return name;
    }
    

    如果该类未嵌套在另一个类中,则其默认访问修饰符为internal。如果该类嵌套在另一个类中,则默认访问修饰符为private

    【讨论】:

    • 非常感谢。这是有道理的。