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

Множественная проверка в теле метода

09.09.2014, 12:19. Показов 1539. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication4
{
   public class Program
    {
        int NumberOfLegs(string animaName)
        {
            if (animaName == "Slon")
            {
                return 4;
            }
            else if (animaName == "Indeika")
            {
                return 2;
            }
            else if (animaName == "Ustrica")
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }
}
 int ii
ii = NumverOfLegs("Indeika");
Console.WriteLine("U Indeiki konuchnostei - " + ii);
ii = NumberOfLegs("Obezyanka");
Console.WriteLine("U obezyanki konechnostei - " +ii);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2014, 12:19
Ответы с готовыми решениями:

USING - в теле метода
Такое впервые вижу, USING в теле метода, для чего он там? я знаю что USING используют для...

Обеспечить видимость переменных в теле одного метода
Компилятор (Visual Studio 2010) выдает ошибку "Use of unassigned local variable 'RightClass'" на...

Проверка метода в Main
Ребят подскажите как можно зациклить этот метод в Main, чтобы только после выполнения этого метода,...

Проверка на реализацию метода после наследования
Собственно сабж. Есть один базовый метод, и есть 2 класса наследуемые от него. Также есть 2...

8
52 / 52 / 7
Регистрация: 13.10.2012
Сообщений: 180
09.09.2014, 12:23 2
даже ванга не в силах ответить на этот вопрос
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
09.09.2014, 12:27 3
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
using System;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main( string[] args )
        {
            Console.WriteLine( NumberOfLegs( Console.ReadLine() ) );
        }
 
        static int NumberOfLegs( string animal )
        {
            switch ( animal )
            {
                case "slon" :
                    return 4;
 
                case "ustrica" :
                    return 1;
 
                case "Indeika" :
                    return 2;
 
                default :
                    return -1;
            }
        }
    }
}
0
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 4
09.09.2014, 12:28  [ТС] 4
А если так?
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
int NumberOfLegs(string animalName)
{
if (animalName == “слон”) //Если название животного — слон
{
// Возвращаемое значение 4
return 4;
}
else if (animalName == “индейка”) //Иначе, если животное — индейка
{
// Возвращаемое значение 2
return 2;
}
else if (animalName == “устрица”)//Иначе, если животное — устрица
{
// Возвращаемое значение 1
return 1;
}
else //Иначе (при всех других условиях)
{
// Возвращаемое значение 0
return 0;
}
}
int i; // СДЕСЬ ОШИБКУ ВЫДАЕТ ПОЧЕМУТО
//Переменная “i” будет хранить значение числа конечностей.
i = NumberOfLegs(“индейка”);
//Теперь i = 2, получив значение, возвращенное методом NumberOfLegs
Console.WriteLine(“У индейки конечностей – “ + i);
i = NumberOfLegs(“обезьяна”);
//Теперь i = 0. Догадайтесь, почему!
Console.WriteLine(“У обезьяны конечностей – “ + i);
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
09.09.2014, 12:30 5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication5
{
    class Program
    {
        static Dictionary<string, int> dict;
 
        static void Main( string[] args )
        {
            dict.Add( "slon", 4 );
            dict.Add( "ustrica", 1 );
            dict.Add( "Indeika", 2 );
 
            Console.WriteLine( dict[Console.ReadLine()]);
        }
    }
}
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,046
Записей в блоге: 3
09.09.2014, 14:54 6
didboss, switch используют только в случаях:
- нетривиальной логики, когда сложно вынести в словарь/массив/формулу.
- жуткой неграмотности и лени думать.

набор else if тот же switch, только в плохой обертке.
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
09.09.2014, 18:17 7
Цитата Сообщение от Wolfdp Посмотреть сообщение
switch используют только в случаях:
- нетривиальной логики, когда сложно вынести в словарь/массив/формулу.
- жуткой неграмотности и лени думать.
То есть ради проверки какого-нибудь enuma на три значения будем выделять память в куче под словарь, заполнять его всеми значениями, а потом гордо оттуда доставать?
Или проверка enuma — это нетривиальная логика или жуткая неграмотность и лень думать?
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,046
Записей в блоге: 3
09.09.2014, 19:43 8
Цитата Сообщение от kolorotur Посмотреть сообщение
То есть ради проверки какого-нибудь enuma на три значения будем выделять память в куче под словарь, заполнять его всеми значениями, а потом гордо оттуда доставать?
Если это не 1000 итераций в цикле, то наверное лучше делать так. Насчет жуткая неграмотность и лень думать согласен -- погарячился. Вообще switch скорее предназначин для таких случаев:

C#
1
2
3
4
5
switch(flag){
case 0: throw new Exception();
case 1: return;
case 2: Send(); break;
}
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
09.09.2014, 21:23 9
Цитата Сообщение от Wolfdp Посмотреть сообщение
Если это не 1000 итераций в цикле, то наверное лучше делать так.
Ну не знаю, как по мне, так разница небольшая, но читаемость и понимаемость кода лучше:

C#
1
2
3
4
5
6
7
8
9
Activity GetWeeklyActivity(DayOfWeek day)
{
   switch (day)
   {
      case DayOfWeek.Saturday: return new Party();
      case DayOfWeek.Sunday:   return new HangoverRehab();
      default: return new Work();
   }
}
Словарь:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Activity GetWeeklyActivity(DayOfWeek day)
{
   var dict = new Dictionary<DayOfWeek, Activity>()
   {
      { DayOfWeek.Saturday, new Party() },
      { DayOfWeek.Sunday, new HangoverRehab() }
   };
 
   Activity result;
   if (!dict.TryGetValue(day, out result))
      result = new Work();
 
   return result;
}
Потому, как мне думается, именно для небольших перечислений свитч — самое то.
А вот если возможных ключей много (был у меня проект недавно, так там что-то около двух сотен возможных вариантов было), то лучше на старте создать статический словарик и уже работать с ним, даже если по 1000 раз в цикле туда лазить придется, ибо такую портянку со свитчем в методе поддерживать желающих мало будет
0
09.09.2014, 21:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2014, 21:23
Помогаю со студенческими работами здесь

Проверка наличия метода в объекте/классе
Народ, подскажите каким образом в C# можно у объекта проверить наличие метода?

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что...

Не работает вызов одного метода в теле другого
здравствуйте. занимаюсь переводом проекта с С++ на C#. путем &quot;дебага&quot; обозначилась проблема, что в...

Проверка выполнения метода
Есть такой метод public static void upload(String host, String log, String pass) { ...


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

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