class Program
{
static void Main(string[] args)
{
string name= "noName";
name= Console.ReadLine();
person kalle = new person();
}
class person
{
static string name;
int age;
public void setName(string n)
{
name= n;
}
}
那么如何将“kalle”更改为名为“name”的字符串,以便该程序的用户可以决定该人将被调用?
* 我可以澄清我想要做的事情: *我正在寻找的是我可以根据用户的需要而不是“kalle”决定名称,所以将“kalle”更改为串...
答案 0 :(得分:5)
当前版本的代码存在一些问题。
name
是Person
内的静态字段,它将其与Person
类型相关联,而非实例。移除static
修饰符,以便每个Person
都可以拥有自己的名称private
,这意味着没有人可以访问name
或age
。它们应为internal
或public
以下是提议更改的代码
class person
{
public string name { get; set; }
public int age { get; set; }
}
...
string name = "noName";
name = Console.ReadLine();
person kalle = new person();
kalle.name = name;
答案 1 :(得分:2)
在您的计划中致电static
后,将string name
修饰符移至课程person
中的kalle.setName(name)
字段。
答案 2 :(得分:1)
覆盖ToString()
,有点像这样:
class Person
{
.....
.....
public override string ToString() {
return name;
}
}
所以你可以这样做:
person kalle = new person();
kalle.name = "Hello";
string value = falle.ToString();
所以kalle
的字符串代表 here ,变成“Hello”(name
属性的内容)
如果这不是您所要求的,请澄清。
编辑
阅读多个
的示例string s = null;
while((s = Console.ReadLine())!="x") {
Console.WriteLine("how many people would you add?");
int howMany = Console.ReadLine();
for(int i=0;i<howMany ;i++)
{
//create Person objects and add them to the collection
//ask user to insert the name for current Person
Console.WriteLine(string.Format("Please insert the name for the Person {0}", i));
//read the name
string name = Console.ReadLine();
//construct Person object, based on (i) and (name)
}
}
希望这就是你所要求的。
答案 3 :(得分:0)
是否要动态设置实例的名称?
所以你有
person kalle = new person()
如果用户输入“sven”,您将获得
person sven = new person()
...