Как переименовать возвращаемые элементы Tuples? - PullRequest
0 голосов
/ 01 февраля 2019

Я новичок в C # новая функция, называемая Tuples.Я написал некоторый код на Tuple.когда кортеж возвращается методом (кортеж содержит значения, кратные множеству)

Итак, я хочу указать какое-то конкретное имя вместо item1, item2 и т. Д ... Как это сделать?

Заранее спасибо.

Код:

namespace CSharp_Tuples
{
    class Program
    {
        static void Main(string[] args)
        {
            string PhoneNumbers = "+92315 +92316 +92317 +92318";
            var separateNumbers = GetIndividualNumbers(PhoneNumbers);

            string firstNumber = separateNumbers.Item1;
            string secondNumber = separateNumbers.Item2;
            string thirdNumber = separateNumbers.Item3;
            string fourthNumber = separateNumbers.Item4;

            Console.WriteLine(firstNumber);
            Console.WriteLine(secondNumber);
            Console.WriteLine(thirdNumber);
            Console.WriteLine(fourthNumber);

        }
        static Tuple<string, string, string, string> GetIndividualNumbers(string allNumbers)
        {
            string[] numbers  = allNumbers.Split(' ');
            return Tuple.Create<string,string,string,string>(numbers[0],numbers[1],numbers[2],numbers[3]);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Функция C # 7.0 использует ValueTuple , а не старый Tuple .

С помощью этой функции вы можете сделать что-то подобное:

namespace CSharp_Tuples
{
    class Program
    {
        static void Main(string[] args)
        {
            string PhoneNumbers = "+92315 +92316 +92317 +92318";

            var numbers = UsingValueTuple(PhoneNumbers);

            Console.WriteLine("firstNumber : " + numbers.firstNumber);
            Console.WriteLine("secondNumber : " + numbers.secondNumer);
            Console.WriteLine("thirdNumber : " + numbers.thirdNumber);
            Console.WriteLine("fourthNumber : " + numbers.fourthNumber);
        }

        static (string firstNumber, string secondNumer, string thirdNumber, string fourthNumber) UsingValueTuple(string allNumbers)
        {
            string[] numbers = allNumbers.Split(' ');
            return (numbers[0], numbers[1], numbers[2], numbers[3]);
        }
    }
}
0 голосов
/ 01 февраля 2019

Далее я изучил эту проблему и получаю заключение.

Заключение:

По вопросу:

Итак, яхотите указать какое-то конкретное имя вместо item1, item2 и т. д ... Как это сделать?

  • Кортежи не могут позволить нам переименовывать возвращаемые значения. Вместо этого мы можем использовать анонимный тип .

Код:

namespace CSharp_Tuples
{
    class Program
    {
        static void Main(string[] args)
        {
            string PhoneNumbers = "+92315 +92316 +92317 +92318";

            //var separateNumbers = GetIndividualNumbers(PhoneNumbers);

            //string firstNumber = separateNumbers.Item1;
            //string secondNumber = separateNumbers.Item2;
            //string thirdNumber = separateNumbers.Item3;
            //string fourthNumber = separateNumbers.Item4;

            //Console.WriteLine(firstNumber);
            //Console.WriteLine(secondNumber);
            //Console.WriteLine(thirdNumber);
            //Console.WriteLine(fourthNumber);


            var numbers = Cast(usingAnonymouseObject(PhoneNumbers), new {
                                                                        firstNumber = "",
                                                                        secondNumer = "",
                                                                        thirdNumber = "",
                                                                        fourthNumber = ""
                                                                        });
            Console.WriteLine("firstNumber : " + numbers.firstNumber);
            Console.WriteLine("secondNumber : " + numbers.secondNumer);
            Console.WriteLine("thirdNumber : " + numbers.thirdNumber);
            Console.WriteLine("fourthNumber : " + numbers.fourthNumber);


        }
        //static Tuple<string, string, string, string> GetIndividualNumbers(string allNumbers)
        //{
        //    string[] numbers  = allNumbers.Split(' ');
        //    return Tuple.Create<string,string,string,string>(numbers[0],numbers[1],numbers[2],numbers[3]);
        //}

        static object usingAnonymouseObject(string allNumbers)
        {
            string[] numbers = allNumbers.Split(' ');
            return new { firstNumber = numbers[0], secondNumer = numbers[1], thirdNumber = numbers[2], fourthNumber = numbers[3] };
        }

        static T Cast<T>(object obj, T type)
        {
            return (T)obj;
        }
    }
}

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