powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Странная работа Switch
25 сообщений из 53, страница 1 из 3
Странная работа Switch
    #38695354
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется код
Код: 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
Странная работа Switch
    #38695369
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunovТо есть должно сработать case 3:, но вместо этого выходит ошибка
С какой стати? mmm1 равняется 2.

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

Сообщение об ошибке компилятора: CS0165: Использование локальной переменной "d3", которой не присвоено значение
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695375
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov, по моему эта ошибка относится к другой части кода
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695378
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там нет другой части кода.
Когда я пишу
Код: 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
Странная работа Switch
    #38695390
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,

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

где-то до свитча у тебя написано string d3; то есть переменная не определена.
Компилятор понятия не имеет, чему будет равно значение mmm1 в рантайме, поэтому не может знать, будет ли присвоено значение переменной d3. Поэтому он выдаёт сообщение об ошибке.
Естественно, если ты без всяких свитчей присвоешь значение d3, ошибка исчезает.
Вывод: напиши хотя бы string d3 = null; Но это если точно уверен, что в свитче значение будет присвоено.
А так или добавь ветку default, или какие-то дополнительные условия и присвоения.
Есть явное указание компилятору, что mmm1=2;(см моё первое сообщение) ничего не значит?
Если указываю d3 =""; до свича, то компилятор не ругается, но и код не работает правильно, так как "" нигде не меняется на нужное значение
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695443
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov, покажи весь код
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695449
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Странная работа Switch
    #38695461
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,
не верю, докажи что не заходит и не меняется..
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695464
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степиMBodunov,
не верю, докажи что не заходит и не меняется..
Сервер локальный, к сожалению...показать не смогу.
Почему не работает - не понимаю...придётся идти другим путём
Спасибо, что помогали
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695468
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Странная работа Switch
    #38695471
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скриншот
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695473
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,
ну дак присвой ей чтонить, или религия?
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695477
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,
первый раз вижу такой смешной switch, если mmm1 вне диапазона цикла, получаем удар в яица, и чешем репу - откуда прилетело..
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695482
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степипервый раз вижу такой смешной switch, если mmm1 вне диапазона цикла, получаем удар в яица, и чешем репу - откуда прилетело..смешно то, что там вообще свич не нужен, все вполне можно уложить в четыре строчки.... интересно, когда автору потребуется обработать дни месяца, он свич из 31-го блока напишет?
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695485
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
ага а если попадется в ключе 32, 32число пойдет гулять по предприятию, машина времени однако...
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695493
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степиShocker.Pro,
ага а если попадется в ключе 32, 32число пойдет гулять по предприятию, машина времени однако...
Я же явно присваивал
Код: plaintext
1.
mmm1=8
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695494
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И получил скриншот, который приложил выше
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695495
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя должен быть сработать
Код: plaintext
1.
2.
3.
4.
                      case 8:
				d1="'"+d2+"0801' and "+"'"+d2+"0901'";
				d3="'"+d2+"0701' and "+"'"+d2+"0801'";
			break;
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695496
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,
авторИ получил скриншот, который приложил выше
ну и где там явно? я там вижу использование не инициализировано переменной. и все
Вы прогнали тест? или не знаете что это такое?
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695498
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,
как оно у вас это сработает, если оно даже не компилировалось?
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695523
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я пишу
Код: 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
Странная работа Switch
    #38695541
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBodunov,
У Вас два способа решить проблему, инициализировать d3 при объявлении или написать правильный безопасный switch
а лучше все вместе, Вы же продолжаете в истерике биться об стену, хотя проблема яйца левого не стоит...
...
Рейтинг: 0 / 0
Странная работа Switch
    #38695547
MBodunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже в коде удалил switch, так как к сожалению никто не пояснил почему он не срабатывает
Когда я до switch присваивал значение d3="" оно таким и оставалось, так как несмотря на то что я явно присваивал mmm1=8
switch не обрабатывался. Пришлось перенести его в html, который вызывает данный aspx файл и в html уже с помощью JS формировать нужное мне значение, которое и передаю в aspx
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Странная работа Switch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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