C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のString.Copy()メソッドとは?構文と使い方を実例付きで解説

C#のCopy()メソッドは、指定した文字列(String)と同じ値を持つ新しいStringインスタンスを作成するための静的メソッドです。既存の文字列の複製を作りたい場合に利用できます。

構文

public static string Copy (string s);

パラメータ「s」には、コピー元となる対象の文字列を指定します。

使用例1

using System;
public class Demo {
   public static void Main(string[] args) {
      string s1 = "Amy";
      string s2 = "Katie";
      string s3 = String.Copy(s2);
      Console.WriteLine("String1 = "+s1);
      Console.WriteLine("String2 = "+s2);
      Console.WriteLine("Are both the strings equal? = "+s1.Equals(s2));
      Console.WriteLine("Are both the strings equal? = "+s2.Equals(s3));
      Console.WriteLine(string.CompareOrdinal(s1, s2));
      Console.WriteLine(string.CompareOrdinal(s2, s3));
   }
}

出力結果

String1 = Amy
String2 = Katie
Are both the strings equal? = False
Are both the strings equal? = True
-10
0

この例では、String.Copy(s2)によってs2の複製であるs3を作成しています。s2とs3は同じ値を持つため、Equals()メソッドはTrueを返します。一方、s1とs2は異なる文字列なのでFalseとなり、CompareOrdinal()による序数比較でも「-10」(不一致)と「0」(一致)という結果が得られます。

使用例2

using System;
public class Demo {
   public static void Main(string[] args) {
      string s1 = "Gary";
      string s2 = "Gary";
      string s3 = String.Copy(s2);
      Console.WriteLine("String1 = "+s1);
      Console.WriteLine("String2 = "+s2);
      Console.WriteLine("Is s1 and s2 equal? = "+s1.Equals(s2));
      Console.WriteLine("Is s2 and s3 equal? = "+s2.Equals(s3));
      s3 = "Harry";
      Console.WriteLine("Is s2 and s3 equal? = "+s2.Equals(s3));
   }
}

出力結果

String1 = Gary
String2 = Gary
Is s1 and s2 equal? = True
Is s2 and s3 equal? = True
Is s2 and s3 equal? = False

2つ目の例では、コピー直後のs2とs3は同じ値のためTrueが返りますが、その後にs3へ別の文字列「Harry」を代入するとFalseに変わります。これは、Copy()で作成されるのはあくまでコピー時点での複製であり、その後の変更が元の文字列に影響しないことを示しています。

注意点:Copy()メソッドは現在非推奨

なお、String.Copy()メソッドは.NET 5以降では非推奨(Obsolete)とマークされています。C#の文字列は不変(イミュータブル)であるため、参照をそのまま別の変数に代入しても元の文字列が書き換えられることはなく、明示的なコピーは通常不要です。現代のC#では、特別な理由がない限り単純な代入を使用することが推奨されています。

  1. C#のSingleOrDefault()メソッドの使い方をわかりやすく解説

    SingleOrDefault()メソッドとはC#のLINQに含まれるSingleOrDefault()メソッドは、シーケンスから単一の特定要素を返すメソッドです。大きな特徴は、要素がシーケンス内に存在しない場合でも例外をスローせず、その型のデフォルト値を返すという点にあります。たとえば参照型の場合は null、数値型の場合は 0 といったデフォルト値が返されるため、空のコレクションを安全に扱いたい場面で非常に便利です。Single()メソッドとの違い似た名前の Single() メソッドは、要素が存在しない場合や複数の要素が見つかった場合に例外(InvalidOperationExcepti

  2. 【C#】String.Join()メソッドで文字列配列を連結する方法

    String.Join()メソッドとはC#のString.Join()メソッドは、文字列配列のすべての要素を1つの文字列に連結するためのメソッドです。各要素の間には、引数で指定した区切り文字(セパレーター)が自動的に挿入されます。たとえば、区切り文字として改行コード「\n」を指定すれば、配列の各要素がそれぞれ別の行に配置された、複数行の文字列を簡単に作成できます。基本的な構文String.Join(\n, starray);第1引数: 要素間に挿入する区切り文字第2引数: 連結対象の文字列配列戻り値: 連結された1つの文字列サンプルコード以下は、5つの文字列要素を持つ配列を改行コードで連結し、