Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Странная работа Switch / 25 сообщений из 53, страница 1 из 3
13.07.2014, 16:01
    #38695354
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Имеется код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 byte mmm1;
  mmm1=2;
switch (mmm1)
        {
            case 1:
				d1="'"+d2+"0101' and "+"'"+d2+"0201'";
				d3="'"+d2n1+"1001' and "+"'"+d2+"0101'";
			break;
			case 2:
				d1="'"+d2+"0201' and "+"'"+d2+"0301'";
				d3="'"+d2+"0101' and "+"'"+d2+"0201'";
			break;
			case 3:
				d1="'"+d2+"0301' and "+"'"+d2+"0401'";
				d3="'"+d2+"0201' and "+"'"+d2+"0301'";
			break;
       }


То есть должно сработать case 3:, но вместо этого выходит ошибка
Сообщение об ошибке компилятора: CS0165: Использование локальной переменной "d3", которой не присвоено значение
То есть ничего не срабатывает. Когда просто пишу без кейса
d1="'"+d2+"0301' and "+"'"+d2+"0401'";
d3="'"+d2+"0201' and "+"'"+d2+"0301'";
Всё работает
...
Рейтинг: 0 / 0
13.07.2014, 16:30
    #38695369
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunovТо есть должно сработать case 3:, но вместо этого выходит ошибка
С какой стати? mmm1 равняется 2.

MBodunovСообщение об ошибке компилятора: CS0165: Использование локальной переменной "d3", которой не присвоено значение
Точно d3? Может d2 всё-таки? В d3 только запись идет, а вот d2 читается.
...
Рейтинг: 0 / 0
13.07.2014, 16:36
    #38695373
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
bazileС какой стати? mmm1 равняется 2.
Пусть 2, тогда должен сработать
case 2:, но не срабатывает
MBodunovСообщение об ошибке компилятора: CS0165: Использование локальной переменной "d3", которой не присвоено значение
Точно d3? Может d2 всё-таки? В d3 только запись идет, а вот d2 читается.[/quot]
Точно это точный текст ошибки, скопированный из браузера
автор Ошибка компиляции
Описание: Ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Просмотрите следующие сведения о данной ошибке и измените соответственно исходный код.

Сообщение об ошибке компилятора: CS0165: Использование локальной переменной "d3", которой не присвоено значение
...
Рейтинг: 0 / 0
13.07.2014, 16:43
    #38695375
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov, по моему эта ошибка относится к другой части кода
...
Рейтинг: 0 / 0
13.07.2014, 16:52
    #38695378
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Там нет другой части кода.
Когда я пишу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
switch (mmm1)
        {
            case 1:
				d1="'"+d2+"0101' and "+"'"+d2+"0201'";
				d3="'"+d2n1+"1001' and "+"'"+d2+"0101'";
			break;
			case 2:
				d1="'"+d2+"0201' and "+"'"+d2+"0301'";
				d3="'"+d2+"0101' and "+"'"+d2+"0201'";
			break;
			case 3:
				d1="'"+d2+"0301' and "+"'"+d2+"0401'";
				d3="'"+d2+"0201' and "+"'"+d2+"0301'";
			break;
       }
d1="'"+d2+"0201' and "+"'"+d2+"0301'";
d3="'"+d2+"0101' and "+"'"+d2+"0201'";


присваивая явно значения из того кейса который должен сработать, код работает без ошибок
...
Рейтинг: 0 / 0
13.07.2014, 17:17
    #38695390
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,

где-то до свитча у тебя написано string d3; то есть переменная не определена.
Компилятор понятия не имеет, чему будет равно значение mmm1 в рантайме, поэтому не может знать, будет ли присвоено значение переменной d3. Поэтому он выдаёт сообщение об ошибке.
Естественно, если ты без всяких свитчей присвоешь значение d3, ошибка исчезает.
Вывод: напиши хотя бы string d3 = null; Но это если точно уверен, что в свитче значение будет присвоено.
А так или добавь ветку default, или какие-то дополнительные условия и присвоения.
...
Рейтинг: 0 / 0
13.07.2014, 17:29
    #38695395
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
petalvikMBodunov,

где-то до свитча у тебя написано string d3; то есть переменная не определена.
Компилятор понятия не имеет, чему будет равно значение mmm1 в рантайме, поэтому не может знать, будет ли присвоено значение переменной d3. Поэтому он выдаёт сообщение об ошибке.
Естественно, если ты без всяких свитчей присвоешь значение d3, ошибка исчезает.
Вывод: напиши хотя бы string d3 = null; Но это если точно уверен, что в свитче значение будет присвоено.
А так или добавь ветку default, или какие-то дополнительные условия и присвоения.
Есть явное указание компилятору, что mmm1=2;(см моё первое сообщение) ничего не значит?
Если указываю d3 =""; до свича, то компилятор не ругается, но и код не работает правильно, так как "" нигде не меняется на нужное значение
...
Рейтинг: 0 / 0
13.07.2014, 19:45
    #38695443
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov, покажи весь код
...
Рейтинг: 0 / 0
13.07.2014, 20:14
    #38695449
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Код: plaintext
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
<script runat="server">

void Page_Load(Object sender, EventArgs e) 

{ 
  byte mmm1;//я писал здесь и int. 
  mmm1=8;
  string d1=Page.Request.QueryString["d1"];
  string d2;string d3;
 //d3=""; - если убрать комментарий не ругается, пустое значение не изменяется
  d2=Page.Request.QueryString["d2"];
  int result = Convert.ToInt32(d2)+1; string d2n=Convert.ToString(result);
      result = Convert.ToInt32(d2)-1; string d2n1=Convert.ToString(result);
  switch (mmm1)
        {
            case 1:
				d1="'"+d2+"0101' and "+"'"+d2+"0201'";
				d3="'"+d2n1+"1001' and "+"'"+d2+"0101'";
			break;
			case 2:
				d1="'"+d2+"0201' and "+"'"+d2+"0301'";
				d3="'"+d2+"0101' and "+"'"+d2+"0201'";
			break;
			case 3:
				d1="'"+d2+"0301' and "+"'"+d2+"0401'";
				d3="'"+d2+"0201' and "+"'"+d2+"0301'";
			break;
			case 4:
				d1="'"+d2+"0401' and "+"'"+d2+"0501'";
				d3="'"+d2+"0301' and "+"'"+d2+"0401'";
			break;
			case 5:
				d1="'"+d2+"0501' and "+"'"+d2+"0601'";
				d3="'"+d2+"0401' and "+"'"+d2+"0501'";
			break;
			case 6:
				d1="'"+d2+"0601' and "+"'"+d2+"0701'";
				d3="'"+d2+"0501' and "+"'"+d2+"0601'";
			break;
			case 7:
				d1="'"+d2+"0701' and "+"'"+d2+"0801'";
				d3="'"+d2+"0601' and "+"'"+d2+"0701'";
			break;
			case 8:
				d1="'"+d2+"0801' and "+"'"+d2+"0901'";
				d3="'"+d2+"0701' and "+"'"+d2+"0801'";
			break;
			case 9:
				d1="'"+d2+"0901' and "+"'"+d2+"1001'";
				d3="'"+d2+"0801' and "+"'"+d2+"0901'";
			break;
			case 10:
				d1="'"+d2+"1001' and "+"'"+d2+"1101'";
				d3="'"+d2+"0901' and "+"'"+d2+"1001'";
			break;
			case 11:
				d1="'"+d2+"1101' and "+"'"+d2+"1201'";
				d3="'"+d2+"1001' and "+"'"+d2+"1101'";
			break;
			case 12:
				d1="'"+d2+"1201 and "+d2n+"0101";
				d3="'"+d2+"1101' and "+"'"+d2+"1201'";
			break;			
		}	
   int BIDN;
 BIDN = 0;
   BIDN = Convert.ToInt32((Page.Request.QueryString["B1DN"]));  
 int B2DN;
 B2DN = 0;
   B2DN = Convert.ToInt32((Page.Request.QueryString["B2DN"]));  
//int OdbcDbType = Convert.ToInt32(Request.Form["BID"]);


   
OdbcConnection conn = new OdbcConnection();
conn.ConnectionString = 


Дальше идёт запрос к БД
...
Рейтинг: 0 / 0
13.07.2014, 20:44
    #38695461
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
не верю, докажи что не заходит и не меняется..
...
Рейтинг: 0 / 0
13.07.2014, 20:49
    #38695464
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Где-то в степиMBodunov,
не верю, докажи что не заходит и не меняется..
Сервер локальный, к сожалению...показать не смогу.
Почему не работает - не понимаю...придётся идти другим путём
Спасибо, что помогали
...
Рейтинг: 0 / 0
13.07.2014, 20:57
    #38695468
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
нука прогони тест

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
[TestFixture]
    public class UnitTests1
    {
        [Test]
        public void Assa()
        {
            string d1 = "1";
            string d3 = null;
            //d3=""; - если убрать комментарий не ругается, пустое значение не изменяется
            string d2 = "2";
            int result = Convert.ToInt32(d2) + 1;
            string d2n = Convert.ToString(result);
            result = Convert.ToInt32(d2) - 1;
            string d2n1 = Convert.ToString(result);
            var bytes = new List<byte> { 1, 2, 3, 4, 5, 6, 7, 8,8,10,11,12 };
            foreach (var b in bytes)
            {
                switch (b)
                {
                    case 1:
                        d1 = "'" + d2 + "0101' and " + "'" + d2 + "0201'";
                        d3 = "'" + d2n1 + "1001' and " + "'" + d2 + "0101'";
                        break;
                    case 2:
                        d1 = "'" + d2 + "0201' and " + "'" + d2 + "0301'";
                        d3 = "'" + d2 + "0101' and " + "'" + d2 + "0201'";
                        break;
                    case 3:
                        d1 = "'" + d2 + "0301' and " + "'" + d2 + "0401'";
                        d3 = "'" + d2 + "0201' and " + "'" + d2 + "0301'";
                        break;
                    case 4:
                        d1 = "'" + d2 + "0401' and " + "'" + d2 + "0501'";
                        d3 = "'" + d2 + "0301' and " + "'" + d2 + "0401'";
                        break;
                    case 5:
                        d1 = "'" + d2 + "0501' and " + "'" + d2 + "0601'";
                        d3 = "'" + d2 + "0401' and " + "'" + d2 + "0501'";
                        break;
                    case 6:
                        d1 = "'" + d2 + "0601' and " + "'" + d2 + "0701'";
                        d3 = "'" + d2 + "0501' and " + "'" + d2 + "0601'";
                        break;
                    case 7:
                        d1 = "'" + d2 + "0701' and " + "'" + d2 + "0801'";
                        d3 = "'" + d2 + "0601' and " + "'" + d2 + "0701'";
                        break;
                    case 8:
                        d1 = "'" + d2 + "0801' and " + "'" + d2 + "0901'";
                        d3 = "'" + d2 + "0701' and " + "'" + d2 + "0801'";
                        break;
                    case 9:
                        d1 = "'" + d2 + "0901' and " + "'" + d2 + "1001'";
                        d3 = "'" + d2 + "0801' and " + "'" + d2 + "0901'";
                        break;
                    case 10:
                        d1 = "'" + d2 + "1001' and " + "'" + d2 + "1101'";
                        d3 = "'" + d2 + "0901' and " + "'" + d2 + "1001'";
                        break;
                    case 11:
                        d1 = "'" + d2 + "1101' and " + "'" + d2 + "1201'";
                        d3 = "'" + d2 + "1001' and " + "'" + d2 + "1101'";
                        break;
                    case 12:
                        d1 = "'" + d2 + "1201 and " + d2n + "0101";
                        d3 = "'" + d2 + "1101' and " + "'" + d2 + "1201'";
                        break;
                }
                Debug.WriteLine("____________________________________");
                Debug.WriteLine("byte =" + b);
                Debug.WriteLine("d2=" + d2);
                Debug.WriteLine(d1);
                Debug.WriteLine(d3);
                Debug.WriteLine("____________________________________");
            }
           

            Assert.True(true);
        }
       
    }


...
Рейтинг: 0 / 0
13.07.2014, 21:01
    #38695471
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Скриншот
...
Рейтинг: 0 / 0
13.07.2014, 21:07
    #38695473
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
ну дак присвой ей чтонить, или религия?
...
Рейтинг: 0 / 0
13.07.2014, 21:13
    #38695477
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
первый раз вижу такой смешной switch, если mmm1 вне диапазона цикла, получаем удар в яица, и чешем репу - откуда прилетело..
...
Рейтинг: 0 / 0
13.07.2014, 21:20
    #38695482
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Где-то в степипервый раз вижу такой смешной switch, если mmm1 вне диапазона цикла, получаем удар в яица, и чешем репу - откуда прилетело..смешно то, что там вообще свич не нужен, все вполне можно уложить в четыре строчки.... интересно, когда автору потребуется обработать дни месяца, он свич из 31-го блока напишет?
...
Рейтинг: 0 / 0
13.07.2014, 21:23
    #38695485
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Shocker.Pro,
ага а если попадется в ключе 32, 32число пойдет гулять по предприятию, машина времени однако...
...
Рейтинг: 0 / 0
13.07.2014, 21:39
    #38695493
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Где-то в степиShocker.Pro,
ага а если попадется в ключе 32, 32число пойдет гулять по предприятию, машина времени однако...
Я же явно присваивал
Код: plaintext
1.
mmm1=8
...
Рейтинг: 0 / 0
13.07.2014, 21:40
    #38695494
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
И получил скриншот, который приложил выше
...
Рейтинг: 0 / 0
13.07.2014, 21:42
    #38695495
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Хотя должен быть сработать
Код: plaintext
1.
2.
3.
4.
                      case 8:
				d1="'"+d2+"0801' and "+"'"+d2+"0901'";
				d3="'"+d2+"0701' and "+"'"+d2+"0801'";
			break;
...
Рейтинг: 0 / 0
13.07.2014, 21:44
    #38695496
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
авторИ получил скриншот, который приложил выше
ну и где там явно? я там вижу использование не инициализировано переменной. и все
Вы прогнали тест? или не знаете что это такое?
...
Рейтинг: 0 / 0
13.07.2014, 21:48
    #38695498
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
как оно у вас это сработает, если оно даже не компилировалось?
...
Рейтинг: 0 / 0
13.07.2014, 22:39
    #38695523
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Если я пишу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
byte mmm1; 
  mmm1=8;
  string d1=Page.Request.QueryString["d1"];
  string d2;string d3;
  d2=Page.Request.QueryString["d2"];
  int result = Convert.ToInt32(d2)+1; string d2n=Convert.ToString(result);
      result = Convert.ToInt32(d2)-1; string d2n1=Convert.ToString(result);
  switch (mmm1)
        {
          


Я в праве ожидать что здесь mmm1=8 и что сработает d3="'"+d2+"0701' and "+"'"+d2+"0801'";
И если я сразу после закрывающей } от switch пишу
Код: plaintext
1.
2.
d1="'"+d2+"0801' and "+"'"+d2+"0901'";
d3="'"+d2+"0701' and "+"'"+d2+"0801'";


И вижу что код отрабатывает так как нужно и значение d3 становится определенным, то я делаю вполне логический вывод, почему-то не срабатывает switch (mmm1)
...
Рейтинг: 0 / 0
13.07.2014, 23:01
    #38695541
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
MBodunov,
У Вас два способа решить проблему, инициализировать d3 при объявлении или написать правильный безопасный switch
а лучше все вместе, Вы же продолжаете в истерике биться об стену, хотя проблема яйца левого не стоит...
...
Рейтинг: 0 / 0
13.07.2014, 23:17
    #38695547
MBodunov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа Switch
Я уже в коде удалил switch, так как к сожалению никто не пояснил почему он не срабатывает
Когда я до switch присваивал значение d3="" оно таким и оставалось, так как несмотря на то что я явно присваивал mmm1=8
switch не обрабатывался. Пришлось перенести его в html, который вызывает данный aspx файл и в html уже с помощью JS формировать нужное мне значение, которое и передаю в aspx
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Странная работа Switch / 25 сообщений из 53, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]