.NETのSystem.String.Copyの使い道は?
2023-08-08 10:25:43
質問
とてもくだらない質問で恐縮なのですが、何か見落としているのではないでしょうか。
なぜ 文字列.コピー(文字列) ?
ドキュメントによると、このメソッドは
指定されたStringと同じ値を持つStringの新しいインスタンスを作成します。 のインスタンスを作成します。
.NETでは文字列は不変なので、このメソッドを使うメリットは何だろうと考えてみると
string copy = String.Copy(otherString);
と同じ結果になると思われます。
string copy = otherString;
つまり、内部で行われている帳簿のようなものを除けば、コピーというのは
ReferenceEquals
でないという事実を除けば、観察可能な違いはありません。String は不変のクラスであり、その等式は同一性ではなく値に基づいています。
(@Andrew Hare 氏に、私の元の言い回しが
Copy
がないことを心配していたのです。
役に立つ
という違いがあることを懸念していました)。
を渡されると、もちろん
null
引数が渡されると、Copy は
ArgumentNullException
を投げ、新しいインスタンスがより多くのメモリを消費するかもしれません。後者はほとんど利点のように思えませんし、NULLチェックが全体のCopyメソッドを正当化するのに十分な大きなボーナスであるとは思えません。
ありがとうございます。
どのように解決するのですか?
とは
String.Copy
では、実際に新しいメモリを確保し、ある文字列から別の文字列に文字をコピーしています。これは、メモリ位置を直接処理し、文字列を変更できるアンマネージドコードで文字列を使用する場合に問題となる可能性があります。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] .NETでフォーマット文字列のブレース(中括弧)をエスケープする方法
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] Marginのプロパティ順
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] ファイルまたはアセンブリをロードできませんでした 操作がサポートされていません。(HRESULT: 0x80131515 からの例外)
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] 1は有効なWin32アプリケーションではありません "を解決するには?
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?