-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
1

Создание универсального шаблона

12.02.2019, 22:13. Показов 2500. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не понимаю програмную реализацию задания. Создайте класс MyClass<T>, содержащий статический фабричный метод - T FacrotyMethod(), который будет порождать 2 экземпляра типа, указанного в качестве параметра типа (указателя места заполнения типом – Т). При создании класса использовать ограничения шаблона. тип Т должен иметь открытый конструктор по умолчанию. результат: используя GetType().name отобразить типы двух переменных. мне нужен код
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2019, 22:13
Ответы с готовыми решениями:

Upcast к ограничению универсального шаблона
Добрый день, как сделать так чтобы все неявно апкастилось? using System; namespace...

Создание универсального стека
Прошу помощи в создании универсального стека. Вообще в реализации стека хранящего определенный тип...

Создание универсального триггера
Добрый вечер. Есть вопрос по Transact-SQL Итак, есть задание написать триггер на некоторую...

Создание универсального автозагрузчика
Нашёл код на данном форуме для программы, которая добавляет сама себя в автозагрузку. Но, надо было...

14
14 / 13 / 2
Регистрация: 16.10.2018
Сообщений: 47
13.02.2019, 00:40 2
Цитата Сообщение от Anton124 Посмотреть сообщение
Не понимаю програмную реализацию задания.
А я тоже не понимаю написано как то криво . Особенно "про порождение " и "указателя места" .

Предположительно это все должно выглядеть так . Если что-то не так то всегда можно переделать под ту гребенку которая вам нужна .
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class SomeThing
    {
        static void Main(string[] args)
        {
            var tupleValue = MyClass<object>.Fabric<TaskFactory>();
            Console.WriteLine(tupleValue.firstObject.GetType().Name);
            Console.WriteLine(tupleValue.secondObject.GetType().Name);
            Console.ReadKey();
        }
    }
 
    static class MyClass<Tone> where Tone : class
    {
        public static (Tone firstObject,Ttwo secondObject) Fabric<Ttwo>()
        {
            return (Activator.CreateInstance<Tone>(), Activator.CreateInstance<Ttwo>());
        }
    }
Цитата Сообщение от Anton124 Посмотреть сообщение
тип Т должен иметь открытый конструктор по умолчанию
Ну да о то создание объектов будет ругаться . Если я понял автора . Если допустим создать String то все упадет( раз я поймал волну автора задания , то тут точно правильное направление)
1
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
13.02.2019, 13:27 3
Так что ли?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Main()
{
    var vars = MyClass<bool>.FactoryMethod();
    Console.WriteLine(vars.Item1.GetType().Name);
    Console.WriteLine(vars.Item2.GetType().Name);
}
 
class MyClass<T> 
    where T: new()
{
    public static (T, T) FactoryMethod()
    {
        return (new T(), new T());
    }
}
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
13.02.2019, 15:12  [ТС] 4
при вставке вашего кода ругается на

public static (T, T) FactoryMethod()
{
return (new T(), new T());
}
компилятор не пропускает два Т в одной скобке, и два return вместе
0
14 / 13 / 2
Регистрация: 16.10.2018
Сообщений: 47
13.02.2019, 15:18 5
Цитата Сообщение от Anton124 Посмотреть сообщение
компилятор не пропускает два Т в одной скобке, и два return вместе
Подключи System.ValueTuple для твоего проекта . Его нужно загрузить если нету .
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
13.02.2019, 15:22  [ТС] 6
а как его подключить?
0
14 / 13 / 2
Регистрация: 16.10.2018
Сообщений: 47
13.02.2019, 15:28 7
Цитата Сообщение от Anton124 Посмотреть сообщение
а как его подключить?
При помощи управлениями пакетами Nuget . Что и с чем это едят , выясните при помощи любого поисковика .
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
13.02.2019, 15:45  [ТС] 8
не получается. а есть вариант кода без двух Т в одних скобках и двух return

C#
1
2
3
4
 public static (T,T) FactoryMethod()
        {
            return (new T(), new T());
        }
всё равно ругается. как скобки разбить на две штуки?
0
Эксперт .NET
6315 / 3934 / 1577
Регистрация: 09.05.2015
Сообщений: 9,237
13.02.2019, 15:51 9
Цитата Сообщение от Anton124 Посмотреть сообщение
компилятор не пропускает два Т в одной скобке, и два return вместе
Цитата Сообщение от Anton124 Посмотреть сообщение
всё равно ругается. как скобки разбить на две штуки?
Ваш компилятор устарел, обновитесь.
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
13.02.2019, 15:57  [ТС] 10
не получается. мне нужно на завтра это задание. ради бога. есть другой вариант без установки NuGet system valuetuple??
0
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
13.02.2019, 18:19 11
C#
1
2
3
4
    public static Tuple<T, T> FactoryMethod()
    {
        return Tuple.Create(new T(), new T());
    }
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
13.02.2019, 22:12  [ТС] 12
этот код не работает: что делать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Laba
{
    
    class Program
    {
        static void Main(string[] args)
        {
            var vars = MyClass<bool>.FactoryMethod();
            Console.WriteLine(vars.Item1.GetType().Name);
            Console.WriteLine(vars.Item2.GetType().Name);
        }
        
    }
    class MyClass<T>
    where T : new()
    {
        public static Tuple(T,T) FactoryMethod()
        {
            return Tuple.Create(new T(), new T());
        }
    }
 
 
 
 
}
0
Эксперт .NET
6315 / 3934 / 1577
Регистрация: 09.05.2015
Сообщений: 9,237
13.02.2019, 22:14 13
Цитата Сообщение от Anton124 Посмотреть сообщение
этот код не работает: что делать?
Вам код дали, а вы его даже скопировать корректно не можете...
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 146
13.02.2019, 22:28  [ТС] 14
при компиляции в консоле выводит Boolean Boolean. Это верно?
0
906 / 663 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
14.02.2019, 00:16 15
Цитата Сообщение от Anton124 Посмотреть сообщение
при компиляции в консоле выводит Boolean Boolean. Это верно?
У вас в условии противоречие: указана сигнатура метода, возвращающего одно значение, но при этом сказано, что он будет порождать 2 экземпляра типа. Поэтому я не знаю, что именно вам нужно. Вот другой вариант, если хотите:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Program
{
    static void Main(string[] args)
    {
        var x = MyClass<bool>.FactoryMethod();
        var y = MyClass<decimal>.FactoryMethod();
        
        Console.WriteLine(x.GetType().Name);
        Console.WriteLine(y.GetType().Name);
    }
 
}
 
class MyClass<T>
    where T : new()
{
    public static T FactoryMethod()
    {
        return new T();
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2019, 00:16
Помогаю со студенческими работами здесь

Создание универсального конвертора!!
Здраствуйте все, я разработал конвертер. Но мне нужно ваша помощь!!! ...

Создание универсального обработчика форм
Есть задача сделать универсальную обработку форм, то есть - есть набор функции которые обрабатывают...

Создание универсального окна с календарем.
Простая ситуация: Есть поле на форме с датой и кнопкой рядом. По нажатии на кнопку вызываеться...

Создание универсального HTML элемента/виджета
Вопрос такой. Хочу сверстать виджет(или не знаю как назвать), который бы мог вставляться на любой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru