网站新手以及c#。这是我第一次使用c#,我无法正确打印对象。 (例如Million,Max 55. Cardenas,Jose,22)。我很确定错误是在我的访问者中,但我似乎无法做到正确。
using System.IO;
using System;
class PersonApp
{
static void Main()
{
Random random = new Random();
Person p1 = new Person();
Person p2 = new Person();
p1.Fname = "Max";
p1.Lname = "Million";
p1.Id = random.Next(1,100);
p2.Fname = "Jose";
p2.Lname = "Cardenas";
p2.Id = random.Next(1,100);
Console.WriteLine(p1,p2);
}
}
using System.IO;
using System;
public class Person
{
private string Fname;
private string Lname;
private int Id;
public Person(){
Fname = string.empty;
Lname = string.empty;
Id = 0;
}
public string Fname
{
get
{
return Fname;
}
set
{
Fname = value;
}
}
public string Lname
{
get
{
return Lname;
}
set
{
Lname = value;
}
}
public int Id
{
get
{
return Id;
}
set
{
Id = value;
}
}
}
答案 0 :(得分:2)
您的代码中存在一些问题。
首先,您不能将多个值传递给Console.WriteLine
,如下所示:
Console.WriteLine(p1, p2);
一次做一个:
Console.WriteLine(p1);
Console.WriteLine(p2);
其次,您不能命名您的私人支持字段和用于获取/设置它的公共属性。你可以随意命名它们......通常私有变量以小写或下划线开头,但这取决于你。
一旦你解决了这些问题,你仍然会得到不寻常的输出,这实际上是你班级的完整命名空间。当您将ToString()
传递给p1
时,这是Console.WriteLine
被隐式调用的结果。
覆盖班级中的ToString()
方法:
public class Person
{
private string Fname;
private string Lname;
private int Id;
private override string ToString()
{
return string.Format("{0}, {1} {2}", Lname, Fname, Id);
}
...
...
}
答案 1 :(得分:1)
您需要访问方法的属性才能获得打印的值
错误的代码:
Console.WriteLine(p1,p2); // You are trying to print Objects and this is wrong. !!
更正:使用附件可以打印输出。
Console.WriteLine(p1.Fname); // Print first name "Max"
同样
Console.WriteLine(p1.Lname); // print Last name
Console.WriteLine(p1.Id); // Print ID
此外,您的课程需要更正
using System.IO;
using System;
public class Person{
private string fname;
private string lname;
private int id;
public string Fname
{
get
{
return fname;
}
set
{
fname = value;
}
}
public string Lname
{
get
{
return lname;
}
set
{
lname = value;
}
}
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
}
现在您可以像
一样使用它 Person a = new Person();
a.Fname = "k";
a.Lname = "Do";
a.Id = 1024;
Console.WriteLine(a.Fname+" "+a.Lname+" "+a.Id);
答案 2 :(得分:0)
您不能指望C#知道您希望对象输出的格式。您必须自己连接字符串以生成输出。
最好的方法是在Person
上公开一个readonly属性,根据你的需要进行格式化,如下所示:
public string DisplayName {
get {
return Lname + ", " + Fname + " " + Id;
}
}