Home Backend Development C#.Net Tutorial Detailed explanation of special string type code examples in C#

Detailed explanation of special string type code examples in C#

Mar 06, 2017 am 11:01 AM
c#

This article mainly introduces the special string type of C#. It has a very good reference value. Let’s take a look at it with the editor.

1. Preface

String is a reference type. Everyone knows this, right? But in the process of using it, I find that it still has some characteristics of value types. Why is this?

The reason is that .Net considers that if a large number of string objects are manipulated, and a large number of reference objects are manipulated, the performance will definitely not be as fast as the value type. In order to improve this performance, .Net provides a special solution: string resident pool!

2. Text

Let us look at a piece of code first:

      string str1 = "aa";
      string str2 = "a" + "a";
      Console.WriteLine(ReferenceEquals(str1, str2)); //print:true
Copy after login

This str1 The memory address pointed to by str2 is actually exactly the same!

The reason is that .Net maintains a Hash table inside the CLR (actually the string resident pool mentioned above), the key is the string content, and the value is the address of the managed heap pointed to; when initialized to create When a new string is created, .Net will search the Hash table to see if there is the same value. If the key is the same, the address value of the existing string will be assigned to the newly created string. If not, the address value of the existing string will be assigned to the newly created string. If it exists, the address will be reallocated, which is why the memory of the above code is true.

Let us look at another piece of code:

     string str3 = "ab";
     string str4 = "a";
     str4 += "b";
     Console.WriteLine(ReferenceEquals(str3, str4));//print :false
Copy after login

The reason why false appears, please pay attention to the keyword "initialization" in the previous column Create", when the string is dynamically created, .Net will not search the Hash table to see if it has been created, but create it directly;

If you want to optimize the above code and improve the performance (xian) high (de) pursuit (dan) seeking (teng), we can manually add this string to the string resident pool for comparison

     string str3 = "ab";
     string str4 = "a";
     str4 += "b";
     str4 = string.Intern(str4);//Intern:它会去字符串驻留池中搜索,假如找寻到的话则返回对应的地址
     Console.WriteLine(ReferenceEquals(str3, str4));//print :true
Copy after login

3. Summary

Finally draw some conclusions about string:

1. String is not created using the newobj command in clr, but Created with the ldstr command! Moreover, string has the characteristics of a value type, but it is a reference type in memory and exists on the managed heap;

2. string is sealed, so it cannot be subtracted Class integration;

3. When the created content is the same, the string points to the same address, and each operation on the string will generate a new address (string Constancy);

4. For a large number of splicing, use StringBuilder. It is dynamic and unlike string which is constant, but it is more expensive to create StringBuilder. , so using string for small splicing may be better in terms of performance!

The above is the detailed explanation of the special string type code examples in C#. For more related content, please pay attention to the PHP Chinese website (www. php.cn)!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Active Directory with C# Active Directory with C# Sep 03, 2024 pm 03:33 PM

Guide to Active Directory with C#. Here we discuss the introduction and how Active Directory works in C# along with the syntax and example.

C# Serialization C# Serialization Sep 03, 2024 pm 03:30 PM

Guide to C# Serialization. Here we discuss the introduction, steps of C# serialization object, working, and example respectively.

Random Number Generator in C# Random Number Generator in C# Sep 03, 2024 pm 03:34 PM

Guide to Random Number Generator in C#. Here we discuss how Random Number Generator work, concept of pseudo-random and secure numbers.

C# Data Grid View C# Data Grid View Sep 03, 2024 pm 03:32 PM

Guide to C# Data Grid View. Here we discuss the examples of how a data grid view can be loaded and exported from the SQL database or an excel file.

Patterns in C# Patterns in C# Sep 03, 2024 pm 03:33 PM

Guide to Patterns in C#. Here we discuss the introduction and top 3 types of Patterns in C# along with its examples and code implementation.

Prime Numbers in C# Prime Numbers in C# Sep 03, 2024 pm 03:35 PM

Guide to Prime Numbers in C#. Here we discuss the introduction and examples of prime numbers in c# along with code implementation.

Factorial in C# Factorial in C# Sep 03, 2024 pm 03:34 PM

Guide to Factorial in C#. Here we discuss the introduction to factorial in c# along with different examples and code implementation.

The difference between multithreading and asynchronous c# The difference between multithreading and asynchronous c# Apr 03, 2025 pm 02:57 PM

The difference between multithreading and asynchronous is that multithreading executes multiple threads at the same time, while asynchronously performs operations without blocking the current thread. Multithreading is used for compute-intensive tasks, while asynchronously is used for user interaction. The advantage of multi-threading is to improve computing performance, while the advantage of asynchronous is to not block UI threads. Choosing multithreading or asynchronous depends on the nature of the task: Computation-intensive tasks use multithreading, tasks that interact with external resources and need to keep UI responsiveness use asynchronous.

See all articles