строка в классе метода - PullRequest
       1

строка в классе метода

1 голос
/ 11 января 2012
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 ]

5 голосов
/ 11 января 2012

Существует несколько проблем с текущей версией кода.

  • name - это статическое поле внутри Person, которое связывает его с типом Person, а не с экземплярами.Удалите модификатор static, чтобы каждый Person мог иметь собственное имя
  • . По умолчанию видимость членов C # равна 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;
2 голосов
/ 11 января 2012

Удалите модификатор static в поле string name в классе person после вызова kalle.setName(name) в вашей программе.

1 голос
/ 11 января 2012

Переопределить ToString(), что-то вроде этого:

class Person
    {
        .....
        .....
       public override string ToString() {
            return name;
       }
    }

Таким образом, вы можете сделать:

person kalle = new person();
kalle.name = "Hello"; 
string value = falle.ToString();

Итак, представление строки kalle здесь становится «Привет» (содержание 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)
    }
}

Надеюсь, это то, что вы просите.

0 голосов
/ 11 января 2012

Хотите ли вы динамически установить имя экземпляра?

Итак, у вас есть

person kalle = new person()

Если пользователь введет "sven", вы получите

person sven = new person()

??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...