包含列表的 C# 类

问题描述 投票:0回答:1

我对 Visual Studio 中的 C# 相对缺乏经验。我创建了一个名为 Visitor 的类,我希望跟踪能够以不同的形式访问这些访问者。这样做的最好方法是什么。我想到有一个 Visitor 类,它是一个可以访问的列表。但是,我似乎无法找到一种方法来做到这一点。我收到以下错误

Error   CS1955  Non-invocable member 'Visitors' cannot be used like a method.

他是我的访客班级的代码...

namespace VisitorSignInSystem
{
    public class Visitors
    {
        List<Visitor> current { get; set; } 

        public Visitors()
        {
            current = new List<Visitor>();
        }
        public Visitors(Visitor v) {
            current.Add(v);
        }
    }
}

我在第一个表格上初始化列表....

public Form1()
{
    InitializeComponent();
    Visitors();
}

并尝试以不同的形式将某些内容添加到列表中......

        public VisitorSignInWelcome(Visitor v)
        {
            InitializeComponent();
            Visitors(v);
        }

非常感谢任何帮助或正确执行此操作的路标。

c# visual-studio class oop
1个回答
0
投票

首先,让我们稍微清理一下你的班级:

    public class Visitors
    {
        private List<Visitor> current  = new List<Visitor>();

        public Visitors(){}
        public Visitors(Visitor v) => current.Add(v);
    }

这可确保始终创建当前列表。请注意,如果没有额外的方法或属性,这样的类没有多大意义,我假设这些已经被brewity 省略了。还可以考虑完全删除

Visitors
类,并仅使用
List<Visitor>
来表示多个访问者。

接下来,让我们从我们的类中实际创建一个对象并将其分配给一个字段:

private Visitors visitors;
public Form1()
{
    InitializeComponent();
    visitors = new Visitors();
}

对于最后一部分,让我们在另一个表单之间共享相同的对象:

private Visitors visitors;
public Form2(Visitors visitors){
    InitializeComponent();
    this.visitors = visitors;
}
....
// in form1
public void ShowForm2(){
    var form2 = new Form2(visitors);
    form2.Show();
}

请注意,这只是一个非常简单的基础示例。一旦你开始真正让 UI 变得更高级,复杂性就会大大增加。例如,如果 Form2 对访问者进行更改,它可能需要通知 Form1,以便它可以自行更新,以便用户可以看到更改。

您还可以考虑是否有比“Visitor”更好的术语,因为它可能与访问者模式混淆,至少当我看到名为“Visitor”的类时我是这么想的。

© www.soinside.com 2019 - 2024. All rights reserved.