首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#是否将两个属性链接在一起?

C#是否将两个属性链接在一起?
EN

Stack Overflow用户
提问于 2013-04-04 05:56:22
回答 3查看 1K关注 0票数 0

我正在尝试检索一个学生的模块列表,并将它们添加到另一个类的属性中,以便显示它们。我的目标是,当我创建一个person的实例,并且他们的programme具有特定的名称时,它将检索该程序的模块。

这是我的Programme类中的方法,我尝试从modules类中的ListOfModules方法中获取模块。

代码语言:javascript
运行
复制
    public List<Modules> ModuleList
    {
        get
        {
            Modules m = new Modules();

            if (m.ListOfModules == null)
            {
                return null;
            }
            else
            {
                return m.ListOfModules;
            }
        }
    }

这是模块类中的ListOfModules方法。

代码语言:javascript
运行
复制
internal List<Modules> ListOfModules
    {
        get 
        {
            if (_modules == null)
            {
                return _modules;
            }
            else
            {
                return _modules;
            }
        }
    }

下面是我如何将模块添加到模块列表中的示例。

代码语言:javascript
运行
复制
class CGP : Programmes
{
    List<Modules> modules;
    public CGP() :base("CGP") //CGP is the name of the programme
    {
        modules = new List<Modules>();
        modules.Add(new Modules("example 1"));
        modules.Add(new Modules("example 2"));
    }
}

那么,我该如何着手获取Programme类中的ModuleList方法,以便从modules类中的ListOfModules方法获取此模块列表呢?我知道这些模块正在被添加到ListOfModules方法中,但是我似乎不知道如何将它与ModuleList链接起来,这样我就可以打印出那个列表。

我将感谢任何帮助或支持,因为我已经花费了无数的时间试图弄清楚这一点。抱歉,我听起来像个外行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-04 06:16:08

问题的根源似乎在于基类中的ModuleList。我也不明白为什么你有两个级别的列表,看起来是完全相同的实现。

代码语言:javascript
运行
复制
class Programme
{
    private List<Module> _modules = new List<Module>();

    public List<Module> Modules { get { return _moduleList; } }
}

class CGP : Programme
{
    public CGP() :base("CGP")
    {
        Modules.Add(new Module("example 1"));
        Modules.Add(new Module("example 2"));
    }
}

这看起来特别愚蠢:

代码语言:javascript
运行
复制
internal List<Modules> ListOfModules
{
    get 
    {
        if (_modules == null)
        {
            return _modules;
        }
        else
        {
            return _modules;
        }
    }
}

无论哪种方式返回的都是相同的东西,所以检查是不必要的。它本质上是一样的,就像这样:

代码语言:javascript
运行
复制
internal List<Modules> ListOfModules { get { return _modules; } }
票数 1
EN

Stack Overflow用户

发布于 2013-04-04 06:05:15

没有直接的方法可以像你所描述的那样将这些东西联系起来。

我建议使用一个临时服务,人们可以调用它来按名称检索模块。

票数 0
EN

Stack Overflow用户

发布于 2013-04-04 06:12:07

看起来您的问题是列表模块是在CGP子类中声明的,因此Programmes超类中的ModuleList属性无法访问它。如果您希望Programmes类中的属性能够返回您在CGP构造函数中添加的模块,则需要将它们添加到Programmes类的属性中,可能声明为protected,以便只有子类才能访问它。

还有一些看起来很奇怪的事情:为什么ModuleList getter要创建一个新的模块对象,然后返回它的一个属性?模块的构造函数是创建ListOfModules属性的底层数据,还是从某个地方检索数据?

为什么您的ListOfModules属性要检查_modules是否为null,然后返回它是否为null?我将跳过这一点和_modules属性,并执行以下操作:

代码语言:javascript
运行
复制
internal List<Modules> ListOfModules { get; private set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15798913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档