这基本上是我第一次尝试理解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();
}
}
}
这只是一个想法,它绝对不起作用。但最重要的是,如果你能够将其改正为工作实例,它将对我有所帮助......
答案 0 :(得分:6)
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);
}
}
}
一些有用的链接:properties,constructor
答案 1 :(得分: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();
}
}
}
答案 2 :(得分:3)
问题是你指的是一个不存在的构造函数:
Person Mother = new Person(35, Alice);
根据我的理解,这里的第一个参数是int
,第二个参数应该是string
。但是字符串文字应该用双引号标记,因此该行应该是:
Person Mother = new Person(35, "Alice");
以下一行相同。
现在你可能想要一个构造函数来获取这些参数的类型,并且你想将这些值保存到新对象中,我假设。因此,请在Person
课程中添加:
public Person(int a, string n)
{
this.Age = a;
this.Name = n;
}
最后,您应该通过标记Age
或Name
来使internal
和public
字段可供其他类访问:
public int Age;
public string Name;
在那之后,你应该好好去。
答案 3 :(得分:1)
首先:new Person(35, "Alice")
表示class Person
定义了构造函数public Person(int age, string name)
。或者,您必须调用new Person() { Age = 35, Name = "Alice" }
,只有在您没有定义构造函数的情况下才会工作,或者已经定义了一个带有0个参数的构造函数,例如public Person()
(注意我如何放置“Alice “在引号内?这是因为你没有定义一个名为Alice
的字符串,所以Alice
是一个未知对象)
接下来我们有Mother.Name = "Lucy"
,这不起作用,因为Name
无法被发现。 class Person
确实定义了Name
,但由于您未指定访问修饰符,例如public
或private
,class Program
甚至都不知道它存在,因此无法访问它。因此,您必须使用public string Name
而不是string Name
。 始终指定您的访问修饰符也被认为是一种好的风格。这同样适用于public int Age
和public int DateOfBirth()
。
要了解有关访问修饰符的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms173121.aspx