@ignat2009
14 лет, изучаю C#

Как конвертировать через обобщение в c#?

Здравствуйте, представим что у нас есть метод, где вводятся значения в массив:
using System;
class Program
{   
        public static void Input(ref int[] nums){
            string strNums=Console.ReadLine()+" ";
            string str="";int y=0,i=0;
	    for( i=0,y=0;i<strNums.Length;i++){
                if(strNums[i]!=' ')str+=strNums[i];
	        else {
                    nums[y]=(int.Parse(str));
		    y++;
		    str="";
	        }
            }
	}
}

Но, например, вместо int мне хотелось бы передать byte, long. И мне придется переписывать вместо Инта другой тип, но можно сделать через обобщение
public static void Input<T>(ref T[] nums) и вот в чем проблема... Не получится сконвертировать в массив.
nums[y]=(T.Parse(str));\\Ошибка
Помогите пожалуйста. Заранее благодарю
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
Вам нужен .NET 7 или новее чтобы воспользоваться интерфейсом IParsable.
public static void Input<T>(T[] nums) where T : IParsable<T>


(ref в параметре не нужен при таком использовании внутри, массив это ссылочный тип)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы