Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Практическое руководство. Объединение нескольких строк (Руководство по программированию в C#)
Обновлен: Июль 2008 Объединение — это процесс добавления одной строки к концу другой. При объединении строковых литералов или строковых констант с помощью оператора + компилятор создает одну строку. Объединение среды выполнения не происходит. Однако строковые переменные могут быть объединены только во время выполнения. В таком случае следует уяснить влияние различных подходов на производительность. Пример В следующем примере показано разделение длинного строкового литерала на маленькие строки для повышения удобочитаемости в исходном коде. Во время компиляции эти части будут объединены в одну строку. Производительность не снижается, независимо от количества используемых строк. Язык C#
Копировать код static void Main() { // Concatenation of literals is performed at compile time, not run time. string text = @"Historically, the world of data and the world of objects " + "have not been well integrated. Programmers work in C# or Visual Basic " + "and also in SQL or XQuery. On the one side are concepts such as classes, " + "objects, fields, inheritance, and .NET Framework APIs. On the other side " + "are tables, columns, rows, nodes, and separate languages for dealing with " + "them. Data types often require translation between the two worlds; there are " + "different standard functions. Because the object world has no notion of query, a " + "query can only be represented as a string without compile-time type checking or " + "IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " + "objects in memory is often tedious and error-prone.";
Console.WriteLine(text); } Для объединения строковых переменных можно использовать операторы + или += или методы String..::.Concat, String..::.Format или StringBuilder..::.Append. Оператор + удобен в использовании и позволяет сформировать наглядный код, но он работает последовательно: при каждом использовании оператора создается новая строка. Поэтому создание цепочки из нескольких операторов неэффективно. Например, рассмотрим следующий код: Язык C#
Копировать код static void Main(string[] args) { // To run this program, provide a command line string. // In Visual Studio, see Project > Properties > Debug. string userName = args[0]; string date = DateTime.Today.ToShortDateString();
// Use the + and += operators for one-time concatenations. string str = "Hello " + userName + ". Today is " + date + "."; System.Console.WriteLine(str);
str += " How are you today?"; System.Console.WriteLine(str);
// Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); }
// Example output: // Hello Alexander. Today is 1/22/2008. // Hello Alexander. Today is 1/22/2008. How are you today? // Press any key to exit. //
Если не выполняется объединения большого количества строк (например, в цикле), то снижение производительности этого кода, вероятно, будет незначительным. Это также относится к методам String..::.Concat и String..::.Format. Однако, если самым важным является производительность, то для объединения строк всегда следует использовать класс StringBuilder. В следующем коде используется метод Append класса StringBuilder для объединения строк без "эффекта цепочки" оператора +.
|
||||
Последнее изменение этой страницы: 2018-06-01; просмотров: 195. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |