Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
Chuckcha
4 / 4 / 2
Регистрация: 12.08.2011
Сообщений: 95
1

Строковые оптимизации, чтобы не создавалась новая строковая переменная на каждом шаге цикла

08.02.2012, 11:57. Просмотров 453. Ответов 2
Метки нет (Все метки)

Итак, есть подобный код:

C#
1
2
3
4
5
6
7
8
9
10
11
static int SomeCount(List<string> array)
{
    int count = 0;
 
    foreach (string s in array)
    {
        if (s == "Определённая строка")
            count++;
    }
    return count;
}
Если мы вынесем строку для сравнения в константу, то код будет выполняться быстрее, т.к. не будет создаваться новая переменная при каждом шаге:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
const string str = "Определённая строка";
 
static int SomeCount(List<string> array)
{
    int count = 0;
 
    foreach (string s in array)
    {
        if (s == str)
            count++;
    }
    return count;
}
А теперь вопрос - можно ли как-то сделать подобное для кода ниже? Т.е. чтобы не создавалась новая строковая переменная на каждом шаге.

C#
1
2
3
4
5
6
7
8
9
10
static string[] SomeMethod()
{
    string[] result = new string[50000];
 
    for (int i = 0; i < result.Length; i++)
    {
        result[i] = "Определённая строка";
    }
    return result;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 11:57
Ответы с готовыми решениями:

Чтобы я нажимал кнопку и у меня создавалась новая вкладка в PageControl
Чтобы я нажимал кнопку и у меня создавалась новая вкладка в PageControl'e. И как можно сразу же...

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

Как сделать чтобы переменная создавалась 1 раз, а при закрытии программы не удалялась
Я делаю форму входа с паролем, но при этом у меня возникла проблема. public static string key;...

строковая переменная
Скажите пожалуйста как в Борланде огласить строковую переменную. И какие библиотеки для этого надо...

строковая переменная
как сделать так чтобы в str (изначально ничего нет, и это строковый тип) str= str + &quot;D&quot; в str...

2
kolorotur
Эксперт .NET
13049 / 10203 / 2647
Регистрация: 17.09.2011
Сообщений: 17,337
Завершенные тесты: 1
08.02.2012, 12:11 2
Компилятор это делает за вас.
При парсе все константы из кода выносятся компилятором в const'ы и заменяются ссылкой на них.

Легко проверить:
C#
1
2
3
4
string s1 = "Hello";
string s2 = "Hello";
 
Console.WriteLine(object.ReferenceEquals(s1, s2)); // True
1
Chuckcha
4 / 4 / 2
Регистрация: 12.08.2011
Сообщений: 95
08.02.2012, 12:59  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Компилятор это делает за вас.
При парсе все константы из кода выносятся компилятором в const'ы и заменяются ссылкой на них.

Легко проверить:
C#
1
2
3
4
string s1 = "Hello";
string s2 = "Hello";
 
Console.WriteLine(object.ReferenceEquals(s1, s2)); // True
Благодарю, теперь не буду заморачиваться выносом строк в константы.
0
08.02.2012, 12:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2012, 12:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Строковая переменная
Привет всем! Изучаю С++. Ну, проблему кодировки в консольном окне вреде бы решил (работаю в Vicual...

Строковая переменная
Была простейшая программа. Воспользовавшись вашим советом использовать оператор LOCATE, получил...

Строковая переменная
Как сделать что-то типо такого в программе. Введите слово. Если слово &quot;ДА&quot; написать &quot;Верно&quot; Если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.