Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
 Аватар для 5665tm
171 / 120 / 14
Регистрация: 17.06.2013
Сообщений: 386

Исправить предупреждение о неиспользованной переменной

08.08.2013, 11:48. Показов 5530. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. В С# новичок, поэтому заранее извиняюсь за кривой, детский код и нубский вопрос.

Суть вот в чем. Написал метод в который поступает цифра (0... 9) и необязательный флаг (bool ru = false), а на выходе получаем название цифры на русском (один... девять), либо на английском (one... nine) в зависимости от флага. Вот собственно код:

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
static private string NumToWord(int Digit, bool ru = false)
    {
        string Word;
        switch (Digit)
        {
            case 1:
                if (ru) return Word = "один";
                return Word = "one";
            case 2:
                if (ru) return Word = "два";
                return Word = "two";
            case 3:
                if (ru) return Word = "три";
                return Word = "three";
            case 4:
                if (ru) return Word = "четыре";
                return Word = "four";
            case 5:
                if (ru) return Word = "пять";
                return Word = "five";
            case 6:
                if (ru) return Word = "шесть";
                return Word = "six";
            case 7:
                if (ru) return Word = "семь";
                return Word = "seven";
            case 8:
                if (ru) return Word = "восемь";
                return Word = "eight";
            default:
                if (ru) return Word = "девять";
                return Word = "nine";
        }
    }
Так вот: все нормально компилится, работает, отлично, замечательно. Но есть одно но: Visual Studio подчеркивает зеленой чертой вот эту строчку:

C#
1
string Word;
ругается якобы переменной присвоено значение, но ни разу не использовано. Конечно можно забить на это предупреждение, ведь все работатет, но все таки хотелось бы что бы все было красиво и аккуратно (и ведь эта переменная использована! Чего он врет то?). Подскажите как изменить код чтобы убрать это предупреждение?

Добавлено через 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
31
32
33
    static private string NumToWord(int Digit, bool ru = false)
    {
        switch (Digit)
        {
            case 1:
                if (ru) return "один";
                return "one";
            case 2:
                if (ru) return "два";
                return "two";
            case 3:
                if (ru) return "три";
                return "three";
            case 4:
                if (ru) return "четыре";
                return "four";
            case 5:
                if (ru) return "пять";
                return "five";
            case 6:
                if (ru) return "шесть";
                return "six";
            case 7:
                if (ru) return "семь";
                return "seven";
            case 8:
                if (ru) return "восемь";
                return "eight";
            default:
                if (ru) return "девять";
                return "nine";
        }
    }

=======================

Тему можно закрывать в общем =D

.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2013, 11:48
Ответы с готовыми решениями:

Предупреждение: переменной не присвоено значение
Товарищи, есть такой небольшой код using System; struct a { public int X { get; set; } public static int operator +(a A,...

Как исправить предупреждение CA2202 (не удаляйте объекты несколько раз)?
Добрый день. Помогите исправить предупреждение "Предупреждение CA2202" Предупреждение CA2202 Объект "'fs'" можно удалять...

Нужно исправить предупреждение variable 'v' might not have been initialized
procedure TForm2.Image4Click(Sender: TObject); var i,k,v:integer; S:string; begin v:=0; for i:=1 to sg.RowCount do begin if...

4
 Аватар для buntar
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
08.08.2013, 12:06
C#
1
string Word=String.Empty;
Добавлено через 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
if(ru)
{
  switch (Digit)
        {
            case 1: return "один";
                
            case 2:return "два";
                
            default:return "девять";
 
        }
}
else
{
  switch (Digit)
        {
            case 1: return "one";
                
            case 2:return "two";
                
            default:return "nine";
 
        }
}
0
 Аватар для 5665tm
171 / 120 / 14
Регистрация: 17.06.2013
Сообщений: 386
08.08.2013, 12:15  [ТС]
Ну что касается
C#
1
string Word=String.Empty;
как мне показалось проблема была все таки из за того что переменная не использовалась, а не из за того что оказалась неициализированна тем более в моем первом коде она в итоге инициализировалась во всех ветках switch и if. Да и в итоге как оказалось можно было обойтись вообще без этой переменной.

За ваш второй код спасибо, но (исключительно по моему субъективному мнению) мой второй исправленный код (в шапке темы, который я добавил спустя пару минут после создания темы) все таки короче и красивее
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
08.08.2013, 12:19
Эффективнее будет так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class BaseWord : List<string>
{
public string GetWordByDigit(int i)
{
    return this[i-1];
}
}
class RusWord: BaseWord
{
   public RusWord(){this.Add("один"); this.Add("два"); ...}
}
class EngWord:BaseWord
{
  public EngWord(){this.Add("one"); this.Add("two"); ...}
}
Используем:
C#
1
2
3
4
BaseWord Word;
if(ru) Word = new RusWord();
else Word=new EngWord();
string word = Word.GetWordByDigit(2);
0
 Аватар для buntar
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
08.08.2013, 12:26
Цитата Сообщение от 5665tm Посмотреть сообщение
За ваш второй код спасибо, но (исключительно по моему субъективному мнению) мой второй исправленный код (в шапке темы, который я добавил спустя пару минут после создания темы) все таки короче и красивее
Так никто и не спорит. Каждому свой код милее!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2013, 12:26
Помогаю со студенческими работами здесь

Исправить предупреждение deprecated conversion from string constant to 'char*'
Нужно вывести предложение без повторных вхождений слов. Нужно исправить предупреждение deprecated conversion from string constant to...

Исправить значение переменной PATH
Здрям! pathman /as &quot;O:\Oracle\Ora11g\bin&quot; Добавляется переменная, но в конец. Подскажите, пожалуйста, как ее воткнуть...

Как исправить ошибку "потенциально неинициализированной" переменной
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;cmath&gt; #include &lt;vector&gt; using namespace std; struct...

a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b
даны произвольные числа a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b.

Не могу исправить ошибку "использование локальной переменной которой не присвоено значение" при создании Word
Помогите найти ошибку пытаюсь повторить со статьи. Должно работать а выдает ошибку using System; using System.IO; using Word =...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru