无法在结构内部使用参数访问函数

时间:2019-02-07 17:09:30

标签: c#

我不明白为什么函数f.Display_Family(f);没有显示名称。

我在该代码中错过了什么?

namespace Field
{
    struct Person
    {
       public string name;

    }
    struct Family
    {
        public Person Father;
        public Person Mother;

        public void Create_Family()
        {
            Family f;
            Console.WriteLine("give name and family name");
            f.Father.name = Console.ReadLine();
            f.Mother.name = Console.ReadLine();

        }
        public void Display_Family(Family f)
        {
            Console.WriteLine(f.Father.name);
            Console.WriteLine(f.Mother.name);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Family f = new Family();
            f.Create_Family();
            f.Display_Family(f);

        }
    }
}

1 个答案:

答案 0 :(得分:3)

此方法有误:

public void Create_Family()
{
    Family f;
    Console.WriteLine("give name and family name");
    f.Father.name = Console.ReadLine();
    f.Mother.name = Console.ReadLine();
}

您要在此函数中创建另一个系列,对其进行初始化并放弃。您原来的家庭结构未修改!

更好的

public void Create_Family()
{
    Console.WriteLine("give name and family name");
    Father.name = Console.ReadLine();
    Mother.name = Console.ReadLine();
}

同样,方法Display_Family实际上不应该带有参数,因为它可以完美地在当前实例上工作。只需使用

public void Display_Family()
{
    Console.WriteLine(Father.name);
    Console.WriteLine(Mother.name);
}

并在不带参数的情况下调用它。

祝你学习顺利!


此外,您应该切换到使用类,因为家庭是具有个性的“对象”:尽管具有相同的成员名称,不同的家庭却是不同的对象。