5

这基本上是我第一次尝试理解 C# 中的类。我已经浏览了互联网上的几个教程,但是我最想念的东西和我还没有在任何地方找到的东西是一个简单的好例子。

我知道我的基本程序应该是什么样子,我会很感激你的帮助:

using System;

namespace Introduction_to_classes
{
    class Person
    {
        int Age;
        string Name;

        int DateOfBirth()
        {
            return 2013 - Age;
        }
    }

    class Program
    {
        public static void Main()
        {
            Person Mother = new Person(35, Alice);
            Person Son = new Person(12, Johny);

            Mother.Name = "Lucy";  // Just changing the value afterwards

            if(Mother.Age > Son.Age)
            {
                int year = Mother.DateOfBirth();
                Console.WriteLine("Mom was born in {0}.", year);
            }

            Console.ReadLine();
        }
    }
}

这只是一个想法,它绝对行不通。但最重要的是,如果您可以将其纠正为工作示例,它将对我有所帮助......

4

4 回答 4

8
class Person
{
    public int Age { get; set; }
    public string Name { get; set; }

    public Person(int age, string name)
    {
        Age = age;
        Name = name;
    }

    public int DateOfBirth()
    {
        return 2013 - Age;
    }
}

        class Program
        {
            public static void Main()
            {
                Person Mother = new Person(35, "Alice");
                Person Son = new Person(12, "Johny");

                Mother.Name = "Lucy";  // Just changing the value afterwards

                if (Mother.Age > Son.Age)
                {
                    int year = Mother.DateOfBirth();
                    Console.WriteLine("Mom was born in {0}.", year);
                }
            }
        }

一些有用的链接:属性构造函数

于 2013-01-31T13:46:34.120 回答
3
using System;

namespace Introduction_to_classes {
    class Person {
        public int Age;
        public string Name;

        public int DateOfBirth() {
            return 2013-Age;
        }
    }

    class Program {
        public static void Main() {
            Person Mother=new Person {
                Age=35,
                Name="Alice"
            };

            Person Son=new Person {
                Age=12,
                Name="Johny"
            };

            Mother.Name="Lucy";  // Just changing the value afterwards

            if(Mother.Age>Son.Age) {
                int year=Mother.DateOfBirth();
                Console.WriteLine("Mom was born in {0}.", year);
            }

            Console.ReadLine();
        }
    }
}
于 2013-01-31T13:46:45.903 回答
3

问题是您指的是不存在的构造函数:

Person Mother = new Person(35, Alice);

这里的第一个参数是a ,据我了解int,第二个应该是 a 。string但是字符串文字应该用双引号标记,因此该行应该是:

Person Mother = new Person(35, "Alice");

以下行相同。

现在你可能想要一个构造函数来接受这些参数的类型,并且你想将这些值保存到新对象中,我假设。因此,将其添加到您的Person课程中:

public Person(int a, string n)
{
    this.Age = a;
    this.Name = n;
}

最后,你应该让你的AgeName字段可供其他类访问,方法是标记它们internalpublic

    public int Age;
    public string Name;

在那之后,你应该很高兴。

于 2013-01-31T13:47:37.257 回答
1

首先:new Person(35, "Alice")意味着class Person定义了一个构造函数public Person(int age, string name)。或者,您必须调用new Person() { Age = 35, Name = "Alice" }which 只有在您尚未定义构造函数或已定义带 0 个参数的构造函数时才有效,例如public Person()(注意我如何将“Alice”放在引号内?那是因为您没有t 定义一个名为 的字符串Alice,因此Alice是一个未知对象)

接下来我们有Mother.Name = "Lucy",它不起作用,因为Name它是不可发现的。class Person确实定义了 a ,但是由于Name您没有指定访问修饰符,例如publicor privateclass Program因此甚至不知道它存在,因此无法访问它。所以你必须使用public string Name而不是string Name. 始终指定访问修饰符也被认为是一种很好的风格。这同样适用于public int Agepublic int DateOfBirth()

要了解有关访问修饰符的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms173121.aspx

于 2013-01-31T14:04:15.200 回答