字符串到方法类

时间:2012-01-11 14:14:38

标签: c# string class

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”更改为串...

4 个答案:

答案 0 :(得分:5)

当前版本的代码存在一些问题。

  • namePerson内的静态字段,它将其与Person类型相关联,而非实例。移除static修饰符,以便每个Person都可以拥有自己的名称
  • C#成员的默认可见性为private,这意味着没有人可以访问nameage。它们应为internalpublic
  • 一般来说,您应该更喜欢字段上的属性

以下是提议更改的代码

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()

...