Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > аргументы функции


Автор: Bogdan1024 5.8.2006, 19:57
Нужно чтобы функция void myfunc(mytype o) принимала одно из четырёх заведомо заданных (тоесть, они в этом классе прописанны как const) возможных значений одного типа, например, "a", "bb", "ccc" и "d4". Каким сделать тип mytype? Чтобы вообще предотвратить возможность получения функцией неверных значений?

Автор: mr.DUDA 5.8.2006, 21:53
В таких случаях используется enum. Если нужны значения любого типа, то enum не катит. При проверке аргументов, если какой-нибудь аргумент содержит недопустимое значение, то кидают исключение ArgumentException с именем аргумента и объяснением причины - тогда проблему хотя бы можно будет отловить при отладке.

Автор: Exception 6.8.2006, 10:12
Хехе.. На Spec# или Nemerle (используя http://nemerle.org/Design_by_contract_macros) можно было бы написать вот такое:
Код
void SomeFunction (string s)
  requires s == "a" || s == "b"
{ ... }
Возможно, когда-нибудь это будет и в С#, а пока что проверяй аргументы на входе и бросай исключения smile .

Автор: Bogdan1024 6.8.2006, 10:41
Если использовать enum, то можно передать множество. 
Прийдётся использовать двухэлементный массив типа bool, а те константы выкавыривать отдельно.
Спасибо за ответы.

Автор: Exception 6.8.2006, 12:13
Не понял -- что значит "передать множество"?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)