C# での Builder クラスと Buffer クラスの使用法の簡単な説明
この記事では、C# の String StringBuilder と StringBuffer の 3 つのクラスの使用法を簡単に紹介します。必要な方は参考にしてください。実際には機能しません。StringBuilder を使用すれば問題ありません。あなたの考えが間違っているとは言えませんが、より良い提案をすることはできます。以下に、これら 3 つのカテゴリについて簡単に紹介します。
String クラス 私たちが日常的に使用していると、記述したコードがボックス化操作 (値型から参照型への変換) を行う傾向があることに気づかないことがよくあります。たとえば、非常に一般的な文字列連結です
string str=9+"test";
IL コードを見ると、ここでボックス化操作が発生していることがわかります。したがって、これを使用することをお勧めします (値の型を文字列に変換するときは、必ず ToString メソッドを使用してください)。したがって、通常コードを記述するときは、ボックス化とボックス化解除の操作に注意を払う必要があります (後で紹介する汎用コレクションは、ボックス化とボックス化解除の操作を解決するだけです)。ボックス化操作のプロセス: 値型をマネージド ヒープに配置してメモリを割り当てます。値型自体によって割り当てられるメモリに加えて、メモリの合計には、型オブジェクト ポインタと同期インデックス ブロックによって占有されるメモリも追加する必要があります。次に、値型の値がヒープ メモリに再割り当てされ、最後に参照型のオブジェクトのアドレスが返されます。
多くの型 (値型) に ToString メソッドが付属していることはわかっています。これを使用すると、なぜボックス化操作が発生しないのでしょうか。これは単純な真実です (ただし、He は特殊な値型です)。 C# 言語の設計者は、これを行うためにこの方法を思いつきましたstring str=9+"test";
通过查看IL代码可以知道这里发生了装箱的操作。所以建议使用(在把值类型转换为字符串的时候,记得用ToString方法)。所以平时写代码的时候,要注意下,装箱和拆箱的操作(之后推出的泛型集合不就是为了解决装箱和拆箱的操作)。装箱操作的过程:把值类型放到托管堆里面分配内存,除了值类型本身所分配的内存外,内存总量还要加上类型对象指针和同步索引块所占用的内存,之后再将值类型的值重新分配到堆内存当中,最后再返回引用类型的对象的地址。
我们知道很多类型(值类型)都自带了一个ToString方法,为毛用这个就不会发生装箱操作呢,很简单的一个道理,不是有人和你说String是特殊的值类型(虽然他是引用类型),C#语言的设计者,为了做到这一点,他想出了这个方法
把String对象,一旦赋值就不可改变(叫做字符串的恒定性),赋值完了之后,再对String进行拼接,赋值等,都会再内存里面重新分配一个新的内存空间。
StringBuilder
基于上面的问题,string类在重新赋值会重新去分配内存空间,所以为了解决这个问题,微软推出了一个StringBuilder的类。可以看看StringBuilder类是如何做到不重新分配内存的呢。
通过阅读StringBuiler类的实现,我们可以发现
internal const int DefaultCapacity = 0x10; StringBuilder
StringBuilder
上記の問題に基づいて、string クラスは再割り当て時にメモリ領域を再割り当てするため、この問題を解決するために Microsoft は StringBuilder クラスを開始しました。 StringBuilder クラスがどのようにメモリを再割り当てしないのかがわかります。
StringBuiler クラスの実装を読むと、 external const int DefaultCapacity = 0x10; StringBuilder
クラスが見つかり、デフォルトのサイズは 16 です。これは、StringBuilder の長さを指定しない場合を意味します。 16 を超えると、メモリが再割り当てされます。特定の実装については、StringBuilder クラスの Append ソース コードを参照してください。
通常 StringBuilder を使用する場合、適切な長さを指定する必要があることがコードからわかります。ソース コード内の固定ステートメント ブロック (平たく言えば、ガベージ コレクションを無効にして変数アドレスをリサイクルできます)。 要約: コードを記述するときは、ボックス化操作とボックス化解除操作に注意し、stringBuilder の使用に注意を払う必要があります。
特別な推奨事項🎜🎜「php Programmer Toolbox」V0.1バージョンのダウンロード🎜🎜🎜2. 🎜ASPの無料ビデオチュートリアル🎜🎜🎜3.ヤンフイさんのASP の基本的なビデオチュートリアル🎜🎜以上がC# での Builder クラスと Buffer クラスの使用法の簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
