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

C#でStringCollectionが読み取り専用かどうかを確認する方法

C#のStringCollectionが読み取り専用(Read-Only)かどうかを確認するには、IsReadOnlyプロパティを使用します。このプロパティは、コレクションが読み取り専用の場合にtrueを、読み書き可能な場合にfalseを返します。

IsReadOnlyプロパティとは

StringCollection.IsReadOnlyは、System.Collections.Specialized名前空間に属するプロパティで、現在のコレクションに対して要素の追加や削除などの変更操作が可能かどうかを判定できます。読み取り専用のコレクションに対して変更操作を行おうとすると、例外がスローされるため、事前に確認しておくことが重要です。

サンプルコード1:数値文字列の場合

以下の例では、数値の文字列配列からStringCollectionを作成し、読み取り専用かどうかを確認しています。

using System;
using System.Collections.Specialized;

public class Demo {
   public static void Main() {
      StringCollection stringCol = new StringCollection();
      String[] arr = new String[] { "100", "200", "300", "400", "500" };
      
      Console.WriteLine("配列の要素...");
      foreach (string res in arr) {
         Console.WriteLine(res);
      }
      
      stringCol.AddRange(arr);
      Console.WriteLine("StringCollectionは読み取り専用か? = " + stringCol.IsReadOnly);
      Console.WriteLine("指定した文字列はStringCollectionに含まれているか? = " + stringCol.Contains("800"));
   }
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

配列の要素...
100
200
300
400
500
StringCollectionは読み取り専用か? = False
指定した文字列はStringCollectionに含まれているか? = False

この例では、新しく作成したStringCollectionは読み書き可能なため、IsReadOnlyプロパティはFalseを返します。また、文字列「800」はコレクションに存在しないため、Contains()メソッドもFalseを返しています。

サンプルコード2:名前の文字列の場合

次に、別の例として名前のリストを使用したケースを見てみましょう。

using System;
using System.Collections.Specialized;

public class Demo {
   public static void Main() {
      StringCollection stringCol = new StringCollection();
      String[] arr = new String[] { "John", "Tim", "Kevin", "Bradman", "Katie", "Tom", "Nathan" };
      
      Console.WriteLine("文字列配列の要素...");
      foreach (string res in arr) {
         Console.WriteLine(res);
      }
      
      stringCol.AddRange(arr);
      Console.WriteLine("StringCollectionは読み取り専用か? = " + stringCol.IsReadOnly);
      Console.WriteLine("指定した文字列はStringCollectionに含まれているか? = " + stringCol.Contains("Tim"));
   }
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

文字列配列の要素...
John
Tim
Kevin
Bradman
Katie
Tom
Nathan
StringCollectionは読み取り専用か? = False
指定した文字列はStringCollectionに含まれているか? = True

この例では、「Tim」がコレクション内に存在するため、Contains()メソッドはTrueを返しています。

まとめ

StringCollectionが読み取り専用かどうかを確認するには、IsReadOnlyプロパティを使用します。通常、newキーワードで生成したStringCollectionインスタンスは読み書き可能ですが、ラッパー経由で取得したコレクションなどでは読み取り専用になる場合があるため、変更操作の前にこのプロパティで確認することをおすすめします。

  1. C#でファイルの存在を確認する方法|File.Exists()メソッドの使い方

    プログラムを開発していると、指定したファイルが実際に存在するかどうかを確認したい場面はよくあります。ここでは、次のファイルが存在するかどうかをチェックする例を見てみましょう。E:\new.txtFile.Exists()メソッドとはC#では、System.IO名前空間に含まれるFile.Exists()メソッドを使うことで、ファイルの存在を簡単に確認できます。このメソッドは、指定したパスにファイルが存在すればtrue、存在しなければfalseを返します。上記のファイルの存在を確認するには、以下のようにExists()メソッドを使用します。if (File.Exists(@E:\new.txt)

  2. Pythonで配列が「美しい」かどうかを判定する方法

    この記事では、ユニークな要素からなる配列 nums が与えられたときに、その配列が「美しい配列」と呼べる条件を満たしているかどうかを判定する方法を解説します。満たすべき条件は以下の2つです。すべての要素が 1 から n の範囲内に収まっていること配列が昇順にソートされていないことたとえば、入力が nums = [2,6,1,5,3,4] の場合、出力は True になります。これは、すべての要素が 1〜6 の範囲に存在し、かつ昇順に並んでいないためです。解法のアプローチこの問題は、次の手順で解くことができます。n := nums のサイズとするtotal := nums[0] で初期化するis