Обновление списка с помощью метода? - PullRequest
1 голос
/ 25 октября 2011

Это действительно простой вопрос относительно метода.Я довольно новичок в C # и тестирую списки.Как мне вызвать метод addTwo, чтобы он обновлял каждый элемент в списке «Метки» на два?Обратите внимание, что я уже создал этот метод (прокрутите вниз ниже основного метода).Я просто хочу знать, как вызвать его в основном методе.

namespace ParallelLists
    {
        class Program
        {
            static void Main(string[] args)
            {
                //create an list of 4 student names
                List<string> names = new List<string>(4);
                names.Add("Matt");
                names.Add("Mark");
                names.Add("Luke");
                names.Add("John");

                //create a list of 4 integers representing marks
                List<decimal> marks = new List<decimal>(4);
                marks.Add(88m);
                marks.Add(90m);
                marks.Add(55m);
                marks.Add(75m);


                Console.WriteLine("the mark of " + names[0] + " is : " + marks[0]);
                Console.ReadLine();

                //Upgrade everyone by 2 marks
               ...   
            }

            public List<decimal> addTwo(List<decimal> mark)
            {
                List<decimal> temp = mark;
                for (int i = 0; i < temp.Count; i++)
                {
                    temp[i] += 2m;
                }
                return temp;
            }
        }
    }

Ответы [ 3 ]

3 голосов
/ 25 октября 2011

Вам нужно сделать ваш метод статичным, поскольку вы обращаетесь к не объекту.также вам нужно обновить коллекцию отметок с возвращенным значением.На самом деле вам не нужно возвращать список, потому что список изменчив.

class Program
{
    static void Main(string[] args)
    {
        //create an list of 4 student names
        List<string> names = new List<string>(4);
        names.Add("Matt");
        names.Add("Mark");
        names.Add("Luke");
        names.Add("John");

        //create a list of 4 integers representing marks
        List<decimal> marks = new List<decimal>(4);
        marks.Add(88m);
        marks.Add(90m);
        marks.Add(55m);
        marks.Add(75m);


        marks = addTwo(marks);

        Console.WriteLine("the mark of " + names[0] + " is : " + marks[0]);
        Console.ReadLine();

        Console.Read();

    } 

    public static List<decimal> addTwo(List<decimal> mark)
        {
            List<decimal> temp = mark;
            for (int i = 0; i < temp.Count; i++)
            {
                temp[i] += 2m;
            }
            return temp;
        }
}

Если вы не хотите возвращать список, вы можете сделать следующее:

class Program
    {
        static void Main(string[] args)
        {
            //create an list of 4 student names
            List<string> names = new List<string>(4);
            names.Add("Matt");
            names.Add("Mark");
            names.Add("Luke");
            names.Add("John");

            //create a list of 4 integers representing marks
            List<decimal> marks = new List<decimal>(4);
            marks.Add(88m);
            marks.Add(90m);
            marks.Add(55m);
            marks.Add(75m);


            addTwo(marks);

            Console.WriteLine("the mark of " + names[0] + " is : " + marks[0]);
            Console.ReadLine();

            Console.Read();

        }

        public static void addTwo(List<decimal> mark)
        {
            List<decimal> temp = mark;
            for (int i = 0; i < temp.Count; i++)
            {
                temp[i] += 2m;
            }

        }
    }
1 голос
/ 25 октября 2011

Ваш список уже получает ссылку на 'mark', зачем возвращать что-либо, когда любая выполняемая вами операция будет работать с этим же списком.

вместо:

<code>
public List<decimal> addTwo(List<decimal> mark)
{
   List<decimal> temp = mark;
   for (int i = 0; i < temp.Count; i++)
   {
       temp[i] += 2m;
   }
   return temp;
}

Я быdo:


public void addTwo(List<decimal> mark)
{
   for (int i = 0; i < mark.Count; i++)
   {
      temp[i] += 2m;
   }
}
</code>

Тогда в вашем коде вызов будет таким же, как

addTwo(mark);

Я бы переименовал его в AddTwo, чтобы соответствовать обычным соглашениям c #.

0 голосов
/ 25 октября 2011
//Upgrade everyone by 2 marks
var plustwo = addTwo(marks);
Console.WriteLine("the mark of " + names[0] + " is : " + plustwo[0]);
Console.ReadLine();

Обратите внимание, что вам также нужно сделать AddTwo статическим методом:

  public static List<decimal> addTwo(List<decimal> mark)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...