Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 64
1

В каких случаях лучше использовать класс с параметрами?

06.06.2018, 17:57. Показов 835. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
public class Pair<TFirst,TSecond>{
    public TFirst First;
    public TSecond Second;
}
Если сделать вот так:
C#
1
2
3
Pair<int,string> pair = new Pair<int,string> { First = 1, Second = "two" };
int i = pair.First;   
string s = pair.Second;
то, как я понял, i = 1, s="two". Зачем нужны параметры классу, если можно создавать экземпляр класса и задавать нужным полям значения через конструктор:
C#
1
2
3
4
5
6
7
8
9
10
public class Pair{
    public First,Second;
    public Pair(int x,string y){
       First=x;
       Second=y;
    }
}
Pair pair = new Pair(1,"two");
int i = pair.First;   
string s = pair.Second;
В чём отличие?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2018, 17:57
Ответы с готовыми решениями:

В каких случаях необходимо использовать equals, а в каких ==
Пожалуйста, можете привести пример, каких случаях необходимо использовать equals, а в каких == ?

В каких случаях лучше применять ту или иную сортировку?
В каких случаях лучше применять ту или иную сортировку? Сортировки: Пузырьком Вставками Выбором...

В каких случаях надо закрывать поток, а в каких не надо?
Кашу маслом не испортишь- это не наш метод, сразу говорю ...

String и StringBuilder - что и в каких случаях?
в string хранятся неизменяемые строки, а в StringBuilder изменяемые. Значит ли это, что следует...

9
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
06.06.2018, 18:07 2
Цитата Сообщение от Vadim2411 Посмотреть сообщение
В чём отличие?
Например, вам нужна коллекция экземпляров какого-то типа.
Каким классом вы будете пользоваться?
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 64
06.06.2018, 18:23  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Например, вам нужна коллекция экземпляров какого-то типа.
Каким классом вы будете пользоваться?
Можно просто массив сделать. Можно сделать класс, поля которого будут равны экземплярам других типов.
0
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
06.06.2018, 18:37 4
Vadim2411,
речь идёт о том, что вместо того, чтобы делать коллекцию каждый раз под новый тип, вводят параметр типа, и если вам, например, нужно хранить элементы типа double, то объявляете её следующим образом:
C#
1
List<double> list = new List<double>();
Ведь этот класс обобщён и вместо T можно подставить любой тип, иначе бы пришлось создавать сотни подобных классов, отличающихся лишь типом хранимых данных. Можно, конечно, хранить всё в Object, но это нетипобезопасно и медленно в случае хранения структур.
0
КОП
06.06.2018, 18:47
  #5

Не по теме:

есть мнение, что вы отвечаете про обобщенные типы на вопрос про конструктор vs инициализатор

0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
06.06.2018, 18:57 6
Цитата Сообщение от Vadim2411 Посмотреть сообщение
Можно просто массив сделать.
А если нужен стек? Связный список? Очередь? Дерево? Динамический массив, в конце-концов?

Цитата Сообщение от Vadim2411 Посмотреть сообщение
Можно сделать класс, поля которого будут равны экземплярам других типов.
А откуда разработчик .NET при написании вышеперечисленных коллекций знает, какой класс захочет хранить в его коллекции какой-нибудь разработчик через десяток лет на другом конце земного шара?
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 64
06.06.2018, 18:59  [ТС] 7
Цитата Сообщение от VladPVS Посмотреть сообщение
C#
1
List<double> list = new List<double>();
Т.е. в этом случае тоже можно просто написать несколько разных типов в <>:
C#
1
List<int,string> pair = new List<int,string> { 1, "two" };
и создать коллекцию из элементов разных типов?
0
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
06.06.2018, 19:05 8
Последняя строка - это уже какие-то кортежи, в List можно лишь значение одного типа занести. Обычно создают коллекции, элементы которых принадлежат одному типу. Можно, конечно, List<object> использовать, но не нужно.
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 64
06.06.2018, 19:56  [ТС] 9
Цитата Сообщение от kolorotur Посмотреть сообщение
А откуда разработчик .NET при написании вышеперечисленных коллекций знает, какой класс захочет хранить в его коллекции какой-нибудь разработчик через десяток лет на другом конце земного шара?
Т.е. вместо TFirst и TSecond можно написать кучу разных "псевдонимов" и потом сделать вот так?
C#
1
Pair<int,string,float, *и т.д.*> pair = new Pair<int,string,float, *и т.д.*> { First = 1, Second = "two",Third=4.56, *и т.д.*};
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
06.06.2018, 20:36 10
Цитата Сообщение от Vadim2411 Посмотреть сообщение
Т.е. вместо TFirst и TSecond можно написать кучу разных "псевдонимов" и потом сделать вот так?
Kоличество типов, которые вы можете прописать в параметрах, должно быть равным количеству, определенному при объявлении класса.
Если объявить класс Pair так:
C#
1
2
3
4
5
6
class Pair<TFirst, TSecond, TThird>
{
   public TFirst First { get; set; }
   public TSecond Second { get; set; }
   public TThird Third { get; set; }
}
То пожалуйста.
1
06.06.2018, 20:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2018, 20:36
Помогаю со студенческими работами здесь

В каких случаях нельзя обойтись без событий?
В каких случаях нельзя обойтись без событий, либо это очень сложно ? Для чего их вообще применяют ?...

В каких случаях неявно вызывается objectName.ToString()?
В каких случаях неявно вызывается objectName.ToString()?

Для чего нужен оператор using и в каких случаях он необходим?
Несколько раз сталкивался в C# с оператором using. Но не могу понять для чего он нужен. Сейчас...

4. В каких случаях программа приводит к ошибке выполнения и почему?
Console.Write(&quot;Введите целое положительное число (не более 19 цифр!): &quot;); ulong number...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru