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[3]: Какой аналог в C#
От: _FRED_ Черногория
Дата: 02.07.05 14:06
Оценка: 28 (3)
Здравствуйте, Dmitry_Ch, Вы писали:

D_C>Поддержка динамических массивов — это хорошо, но операции со множествами, хотя бы простенькие (пересечение, вычитание) не поддерживаются.


На уровне языка — нет, но те, кому надо, используют, например, и это::

Q: Is there any work going on like creating a feature rich template library (like www.boost.org) for c#?
A: Not sure of anything exactly like boost but you might want to start out with C5 (http://www.itu.dk/research/c5/) and the Power Collections (http://www.wintellect.com/powercollections/ and http://wintellect.com/WEBLOGS/pgolde/) projects.

[ здесь ]
<< RSDN@Home 1.1.4 beta 7 rev. 500 >> =06:06= [Windows XP — 5.1.2600.0] {Build at .NET 1.1.4322.2032}
under «*none*»
Help will always be given at Hogwarts to those who ask for it.
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: Какой аналог в 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#
От: Аноним  
Дата: 01.07.05 06:07
Оценка: +1
вот это уже действительно изврат, код-то будет делать одно и то же..
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[6]: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.05 15:25
Оценка: +1
Здравствуйте, Димон, Вы писали:

>>С чего бы это? switch как минимум не менее эффективен. Просто более громоздок.<

Д>Безусловно. Но к сожалению, в нем очень сложно указать перечисления типа ['a'..'d', 'e', 'g']

Ну, тут уж ничего не поделашь. Придется использовать сочетание ифов и свитча.

ЗЫ

Я тоже жалею, что подобной дельфийской конструкции нет в Шарпе. Хорошо хоть, что она не так уж часто нужна.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Какой аналог в 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[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[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#
От: 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
ссылка на оригинальное сообщение
Re[5]: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.05 03:22
Оценка:
Здравствуйте, Димон, Вы писали:

Д>Вопрос, как я понял, не в необходимости, а в возможности.

Д>Естественно, есть различные обходные пути в виде switch'a, массива, а мб и структуры, но это из пушки по воробьям.

С чего бы это? switch как минимум не менее эффективен. Просто более громоздок.

Д>Просто делфийцам в шарпе не хватает простой и легкой конструкции in, равно как, и witch.

Д>Но по сравнению с приобретаемыми возможностями, это такие мелочи.

+1
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Какой аналог в C#
От: Аноним  
Дата: 02.07.05 03:36
Оценка:
>С чего бы это? switch как минимум не менее эффективен. Просто более громоздок.<
Безусловно. Но к сожалению, в нем очень сложно указать перечисления типа ['a'..'d', 'e', 'g']
С/у Дмитрий.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[6]: Какой аналог в C#
От: _FRED_ Черногория
Дата: 02.07.05 05:00
Оценка:
Здравствуйте, Димон, Вы писали:

>>С чего бы это? switch как минимум не менее эффективен. Просто более громоздок.<

Д>Безусловно. Но к сожалению, в нем очень сложно указать перечисления типа ['a'..'d', 'e', 'g']

А в скобках квадратных можно казать переменные? Или только константы дозволены?
<< RSDN@Home 1.1.4 beta 7 rev. 500 >> =09:00= [Windows XP — 5.1.2600.0] {Build at .NET 1.1.4322.2032}
under «*none*»
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Какой аналог в C#
От: Dmitry_Ch  
Дата: 02.07.05 13:28
Оценка:
V>Здравствуйте, JazzzMaster, Вы писали:

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


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


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


V>Как нет ? ArrayList::Contains();


Поддержка динамических массивов — это хорошо, но операции со множествами, хотя бы простенькие (пересечение, вычитание) не поддерживаются.
Какой аналог в C#
От: Аноним  
Дата: 02.07.05 14:05
Оценка:
2JazzMaster:

IDictionary set = new Hashtable();
set.Add('a','a')
set.Add('d','d')
set.Add('x','x')

if (set.Contains(ch))
{
}

-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --

.NetCoder


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[7]: Какой аналог в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.05 15:25
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>А в скобках квадратных можно казать переменные? Или только константы дозволены?


Только констранты. Это такой паттерн-матчинг.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Какой аналог в C#
От: _FRED_ Черногория
Дата: 05.07.05 21:41
Оценка:
Здравствуйте, VladD2, Вы писали:

_FR>>А в скобках квадратных можно казать переменные? Или только константы дозволены?


VD>Только констранты. Это такой паттерн-матчинг.


Значит снова сахар. Но сладкий.

ЗЫ. реализовать его прекомпилятором — копейки, или я чего-то не вижу
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.