問題タブ [stringbuilder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - StringBuilder.Append 質問
次の違いがある場合は、その違いを知りたいです。
と :
c# - StringBuilder のエラー -- 文字列が追加されていません
長い文字列を扱うと、この問題が見つかりました。何かアドバイス?
文字列ビルダーの容量が 1024 で長さが 992 のインスタンスがあります。
.Append() は、.Length プロパティが 1024 の文字列です。
.Append() が呼び出された後、.ToString() メソッドは長い "\0\0\0" 文字列を返します。
何が起こっている?0.o
新しい StringBuilder オブジェクトを作成してから追加すると、期待どおりの結果が得られます。それで、文字列「すべき」は大丈夫ですよね?
(.Remove(0, LengthofSB) トリックを実行して stringbuilder をクリアしています)。
何か案は?
c# - C# PInvoke out 文字列宣言
C# PInvoke で、文字列バッファを渡して C DLL がバッファを埋めて戻るようにするにはどうすればよいですか? PInvoke 宣言はどうなりますか?
C 関数の宣言は次のとおりです。
C# では、次のように宣言しました。
それが正しいか?このように StringBuilder 変数を渡しています
私はそれが正しいかどうか知りたいですか?
ありがとう
.net - 文字列と文字列ビルダー
.NET の文字列と文字列ビルダーの違いは何ですか?
c# - StringBuilder objを再利用する方法は?
辞書を宣言したかどうかはわかっているので、再利用するためにmyDict.Clear()を呼び出すことができます。
ここで、sbをStingBuilderobjとして宣言した場合。
sbを再利用する方法は?ありがとうございました。
実際には、mainDictのすべての可能な条件を印刷する必要があります。
このようなsb式の1つ(以下のコードに含まれています)
多くのStringBuilderobjを宣言した場合でも、十分なobjの数を検出できません。実際には、mainDictは非常に複雑です。上記のコードは練習のみです。ありがとう。
コードは1月4日に更新されました。
このような出力
c# - c# で文字列を作成するエレガントな方法
keyvaluepair を使用して構築する文字列は次のようになります: "name1=v1&name2=v2&name3=v3"
私がしていること:
「&」記号の最後の削除ステートメントを回避するエレガントな方法はありますか?
c# - メモリ使用量に関する大きな文字列の処理に関するヒント
メモリを効率的に解放できるように、DataTable や List を強制的に縮小するにはどうすればよいですか? 現在、ループの反復ごとに DataSet から処理された行を削除していますが、メモリが解放されているかどうかはわかりません。
これがメモリ内の DataTable のフットプリントを縮小しない場合は、List を使用できます。DataTable を DataRows のストアとしてのみ使用しています。メモリが少なく、x 回の反復ごとにメモリを解放できるコレクションまたはストレージ メカニズムを使用できます。
ありがとうございました。
編集: What Are Some Good .NET Profiler? を読んだ後、いくつかのメモリ プロファイリングを行った後。メモリの主な消費者は文字列であることを発見しました。
このプロセス中に多くのユーザー出力を行っており、メモリ消費量は約 170MB から 230MB の間で循環しており、約 300MB でピークに達しています。初期サイズが 20971520 の StringBuilder を使用して、何が起こっているかの出力/ログを保持しています。レコードの総数の 1% が処理された後、DevExpress MemoEdit コントロールの Text プロパティを StringBuilder.ToString に設定しています。 (). このメソッドは、StringBuilder.ToString() を MemoEdit.Text に追加するよりも速いことがわかりました (明らかに、StringBuilder に関するロジックは、MemoEdit.Text の追加と設定で異なります)。
また、StringBuilder(20971520) を再作成する代わりに、メモリ上で簡単に実行できることもわかりました。StringBuilder.Remove(0, StringBuilder.Length)
大きな文字列を操作する際のパフォーマンスを向上させるために共有できるヒントはありますか (ログを含むログ ファイルは、約 30 000 レコードに対して約 12.2 MB です)。
注: 質問のタイトルとタグを変更しました。
旧タイトル:DataTable や List を強制的に縮小してメモリを解放するにはどうすればよいですか?
古いタグ: リスト データ テーブル c# .net メモリ
c# - 相互運用による文字列の受信
作成したcコードから文字列を取得するのに問題があります。
まず、一般的に実現されていない背景情報:TAPIAPIからTAPITSPのユーザーが読み取り可能な文字列を受け取りたいのですが。ドライバー名を保存された文字列に一致させることに依存する半実行可能なTAPIソリューションを実装しましたが、お客様の1人が他の方法で動作することを拒否する(Alcatel)PBXを持っているため、代わりに永続的な回線IDで動作するようにこれを変更したいと思います。
Cでは、ヘッダーファイルで関数を次のように定義します。
関数は次のように記述されます。
上で述べたように、これは最終的には何か便利なことをしますが、今のところ、abcがwchar_t * / StringBuilderに配置されていて、C#でそれを見ることができれば幸いです。
C#では、関数を次のように定義します。
文字列は不変であり、DeviceNameをCで設定したいのでDeviceNameをStringBuilderとして定義します(これはMSによって推奨されています)。void
私はまた、それが何かにも影響を与えるという細い希望に基づいてリターンタイプを設定しました(部分的な疑似科学的説明については、この半有用なモノの記事を参照してください)。
そしてそれをそう呼んでください:
実行中のプロセスにデバッガーを接続し、ブレークポイントを設定すると、Cコードで、StringBuilderが何らかの形で変質し、アンマネージコードにnullポインターとして提供されていることに気付きます。
その後、AccessViolationExceptionがC#でスローされます。
何が問題なのですか?
longパラメータを削除すると役立ちます。CのDeviceNameパラメーターに「abc」を追加できます。ただし、その長い変数が必要です。その長いパラメータをそこに置くことによってクラッシュを強制するために、私は間違っているか動揺しているのですか?
javascript - JavaScript には stringbuilder クラスが組み込まれていますか?
いくつかのコード プロジェクト ソリューションが表示されます。
しかし、JavaScript には通常の実装がありますか?