Какой аналог в C#
От: JazzzMaster Россия  
Дата: 01.07.05 04:06
Оценка:
В Delphi можно написать такой код:

var ch : char;
...
if ch in ['a','d','x'] then


Как такое будет выглядеть на C#? Я так понял оператора вхождения в множество в шарпе нет..
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Какой аналог в C#
От: Аноним  
Дата: 01.07.05 04:34
Оценка:
Да мне тоже этого не хватало. ИМХО аналога нет.
Почему-то работа с множествами в .Net развита вяло.
С/у Дмитрий.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Какой аналог в C#
От: SiAVoL Россия  
Дата: 01.07.05 04:48
Оценка:
Здравствуйте, JazzzMaster, Вы писали:

JM>В Delphi можно написать такой код:


JM>
JM>var ch : char;
JM>...
JM>if ch in ['a','d','x'] then
JM>


JM>Как такое будет выглядеть на C#? Я так понял оператора вхождения в множество в шарпе нет..

да нет. Думаю полного соответсвия достичь врядли удастся, но что-то получить можно. Например приведенный пример можно записать так
char ch;
// ...
if (Array.IndexOf(new char[] {'a', 'b', 'c'}, ch) >= 0)

Но насколько я понимаю, это все равно не выход. Потому как в паскале можно еще и так писать (сто лет паскаля не видел, могу и ошибаться):
var ch : char;
...
if ch in ['a'..'x'] then

вот такое сделать без написания своих функций (и без R# ) нельзя
... << RSDN@Home 1.1.4 beta 7 rev. 501>>
Re: Какой аналог в C#
От: WondeRu Россия http://directshow.wonderu.com/
Дата: 01.07.05 05:36
Оценка: +1
Здравствуйте, JazzzMaster, Вы писали:

JM>В Delphi можно написать такой код:


JM>
JM>var ch : char;
JM>...
JM>if ch in ['a','d','x'] then
JM>


JM>Как такое будет выглядеть на C#? Я так понял оператора вхождения в множество в шарпе нет..


Можно поизвращаться
switch (ch)
{
case "a":
case "d":
case "x":
//твой код
break;
}
----------
http://directshow.wonderu.com — DirectShow по-русски (статьи, форум)
Re[2]: Какой аналог в C#
От: JazzzMaster Россия  
Дата: 01.07.05 05:41
Оценка:
Здравствуйте, WondeRu, Вы писали:

WR>Можно поизвращаться

WR>switch (ch)
WR>{
WR>case "a":
WR>case "d":
WR>case "x":
WR>//твой код
WR>break;
WR>}

Поизвращаться, конечно, можно, но когда делать больше нечего...
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Какой аналог в C#
От: JazzzMaster Россия  
Дата: 01.07.05 05:41
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>да нет. Думаю полного соответсвия достичь врядли удастся, но что-то получить можно. Например приведенный пример можно записать так

SAV>
SAV>char ch;
SAV>// ...
SAV>if (Array.IndexOf(new char[] {'a', 'b', 'c'}, ch) >= 0)
SAV>

SAV>Но насколько я понимаю, это все равно не выход. Потому как в паскале можно еще и так писать (сто лет паскаля не видел, могу и ошибаться):
SAV>
SAV>var ch : char;
SAV>...
SAV>if ch in ['a'..'x'] then
SAV>

SAV>вот такое сделать без написания своих функций (и без R# ) нельзя

Спасибо. Такое решение мне более-менее подходит.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Какой аналог в C#
От: Othello  
Дата: 01.07.05 05:42
Оценка: +1 :)
WR>Можно поизвращаться
WR>switch (ch)
WR>{
WR>case "a":
WR>case "d":
WR>case "x":
WR>//твой код
WR>break;
WR>}

если уж извращаться — то тогда уже так:
switch (ch)
{
case "a":goto case "x";
case "d":goto case "x";
case "x":
//твой код
break;
}
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[2]: Какой аналог в C#
От: Аноним  
Дата: 01.07.05 06:07
Оценка: +1
вот это уже действительно изврат, код-то будет делать одно и то же..
Deny everything...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Какой аналог в C#
От: Othello  
Дата: 01.07.05 06:14
Оценка:
Здравствуйте, Virus Quartirus, Вы писали:

VQ>вот это уже действительно изврат, код-то будет делать одно и то же..


VQ>
данное сообщение получено с www.gotdotnet.ru

VQ>ссылка на оригинальное сообщение


не понятно зачем сделано именно так...
возможно они хотели, чтобы программисты реже использовали оператор switch/case
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[4]: Какой аналог в C#
От: Oyster Украина https://github.com/devoyster
Дата: 01.07.05 06:23
Оценка:
Здравствуйте, Othello, Вы писали:

O>Здравствуйте, Virus Quartirus, Вы писали:


VQ>>вот это уже действительно изврат, код-то будет делать одно и то же..


VQ>>
данное сообщение получено с www.gotdotnet.ru

VQ>>ссылка на оригинальное сообщение


O>не понятно зачем сделано именно так...

O>возможно они хотели, чтобы программисты реже использовали оператор switch/case

В смысле? Там не нужен goto case...
Re[4]: Какой аналог в C#
От: Аноним  
Дата: 01.07.05 06:27
Оценка:
угу
Deny everything...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Какой аналог в C#
От: Igor Trofimov  
Дата: 01.07.05 07:26
Оценка: +1
JM>
JM>var ch : char;
JM>...
JM>if ch in ['a','d','x'] then
JM>


Увы, только так неуклюже:

    IList chars = new char[] {'a', 'd', 'x'};
    char ch = 'a';

    if (chars.Contains(ch))
        DoSomething();


И лучше сделать список static'ом, чтобы один раз создавался.
Re: Какой аналог в C#
От: Lloyd Россия  
Дата: 01.07.05 08:05
Оценка: 36 (1) +2
Здравствуйте, JazzzMaster, Вы писали:

JM>
JM>if ch in ['a','d','x'] then
JM>


JM>Как такое будет выглядеть на C#? Я так понял оператора вхождения в множество в шарпе нет..


if ("adx".IndexOf(ch) != -1) {
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re: Какой аналог в C#
От: vvvoloshin1 Канада  
Дата: 01.07.05 11:28
Оценка:
Здравствуйте, JazzzMaster, Вы писали:

JM>В Delphi можно написать такой код:


JM>
JM>var ch : char;
JM>...
JM>if ch in ['a','d','x'] then
JM>


JM>Как такое будет выглядеть на C#? Я так понял оператора вхождения в множество в шарпе нет..


Как нет ? ArrayList::Contains();
Re[2]: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.07.05 12:34
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>if ch in ['a'..'x'] then

SAV>[/pascal]
SAV>вот такое сделать без написания своих функций (и без R# ) нельзя

if (ch >= 'a' && ch <= 'x')


И, кстати, IndexOf и темболее new char[] — это значительно медленее чем просто проверка на равенство.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.07.05 12:34
Оценка:
Здравствуйте, Othello, Вы писали:

O>если уж извращаться — то тогда уже так:

O>
O>switch (ch)
O>{
O>case "a":goto case "x";
O>case "d":goto case "x";
O>case "x":
O>//твой код
O>break;
O>}
O>


А зачем эти сложности? Исхдный варинт чем-то хуже?
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.07.05 12:34
Оценка:
Здравствуйте, JazzzMaster, Вы писали:

JM>В Delphi можно написать такой код:


JM>
JM>var ch : char;
JM>...
JM>if ch in ['a','d','x'] then
JM>


JM>Как такое будет выглядеть на C#? Я так понял оператора вхождения в множество в шарпе нет..


Лучше просто сделать три проверки или востользоваться switch-ем. Чтобы не было громоздко можно создать функцию.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Какой аналог в C#
От: Alik Украина  
Дата: 01.07.05 14:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, SiAVoL, Вы писали:


SAV>>if ch in ['a'..'x'] then

SAV>>[/pascal]
SAV>>вот такое сделать без написания своих функций (и без R# ) нельзя

VD>
VD>if (ch >= 'a' && ch <= 'x')
VD>


VD>И, кстати, IndexOf и темболее new char[] — это значительно медленее чем просто проверка на равенство.


А если создать статический ассоциативный контейнер? Уже бинарное дерево сделает сложность логарифмичесткой, а не линейной...
С уважением. Алик.
Re[4]: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.07.05 19:50
Оценка:
Здравствуйте, Alik, Вы писали:

A>А если создать статический ассоциативный контейнер? Уже бинарное дерево сделает сложность логарифмичесткой, а не линейной...


Какие деревья на 2 элементах? Ты на вызовы методов убъешь времени больше.

Надо сораизмерять задачи и решения.

Самы простой и быстрый метод — это if-ы (до 4 элементов) и switch. switch в приниципе универсальное решение, но громоздкое.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Какой аналог в C#
От: Аноним  
Дата: 02.07.05 03:12
Оценка:
Вопрос, как я понял, не в необходимости, а в возможности.
Естественно, есть различные обходные пути в виде switch'a, массива, а мб и структуры, но это из пушки по воробьям.
Просто делфийцам в шарпе не хватает простой и легкой конструкции in, равно как, и witch.
Но по сравнению с приобретаемыми возможностями, это такие мелочи.
С/у Дмитрий.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.