車輪のx発明 ~B.G's Blog~

代入(string)

stringおよびStringはクラスなので参照型。
代入したら同じ参照先を指す。
文字列は変更不可であり、違う文字列を代入すると、参照先も変わる。

文字列 - C# プログラミング ガイド | Microsoft Learn

MainClass.csで、

こう書くと、

こうなる。
こうなる。

こうなる。
値型のように独立しているように見えるが、そうではなく参照先が変わってる。

Sample/cs/string/assignment/src/string_/string_/Mainclass.cs at master · bg1bgst333/Sample · GitHub

初期化(string)

stringの初期化をまとめる。

文字列 - C# プログラミング ガイド | Microsoft Learn

MainClass.csで、

// 名前空間の登録
using System;       // 共通データ型と基本クラス(System名前空間)

// メインクラス
class MainClass // MainClassクラスの定義
{

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // stringの宣言.
        string str1;    // 初期化しない.

        // null.
        string str2 = null; // nullで初期化.

        // String.Empty.
        string str3 = String.Empty; // String.Empty("")で初期化.

        // 通常文字列リテラル.
        string str4 = "C:\\Path\\To\\File.txt";    // "C:\\Path\\To\\File.txt"で初期化.

        // 逐語的文字列リテラル.
        string str5 = @"C:\Path\To\File.txt";    // @"C:\Path\To\File.txt"で初期化.

        // const.
        const string STR6 = "XYZ";  // constで"XYZ"で初期化.

        // オブジェクト.
        string baseStr = "abcde";   // baseStrを"abcde"で初期化.
        string str7 = baseStr;  // str7をbaseStrで初期化.

        // char配列.
        char[] chArray = new char[] { 'a', 'b', 'c' };  // chArrayを{ 'a', 'b', 'c' }で初期化.
        string str8 = new string(chArray);  // コンストラクタにchArrayを渡して初期化.

        // コンストラクタに文字列は指定できない.
        string str9 = new string("zzz");    // 文字列(string)を渡すコンストラクタは無い.

        // 値の出力.
        System.Console.WriteLine("str1 = " + str1);
        System.Console.WriteLine("str2 = " + str2);
        System.Console.WriteLine("str3 = " + str3);
        System.Console.WriteLine("str4 = " + str4);
        System.Console.WriteLine("str5 = " + str5);
        System.Console.WriteLine("STR6 = " + STR6);
        System.Console.WriteLine("str7 = " + str7);
        System.Console.WriteLine("str8 = " + str8);
        System.Console.WriteLine("str8 = " + str9);

    }

}

と書く。

コンストラクタに文字列は指定できない。
コンストラクタに文字列は指定できない。

コンストラクタに文字列は指定できない。
文字配列は指定できる。

初期化しない場合もそのまま使ったらエラーになってしまう。
初期化しない場合もそのまま使ったらエラーになってしまう。

初期化しない場合もそのまま使ったらエラーになってしまう。

こうすると、

こうなる。
こうなる。

こうなる。

Sample/cs/string/initializing/src/string_ at master · bg1bgst333/Sample · GitHub

const

constで定数の定義ができる。

const キーワード - C# reference | Microsoft Learn

MainClass.csで、

// 名前空間の登録
using System;       // 共通データ型と基本クラス(System名前空間)

// メインクラス
class MainClass // MainClassクラスの定義
{

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // constで定数を定義.
        const int NUM = 10; // intの定数NUMを10で定義.
        const float VALUE = 1.23f;  // floatの定数VALUEを1.23fで定義.
        const string STR = "ABCDE"; // stringの定数STRを"ABCDE"で定義。

        // 定数に代入.(不可.)
        NUM = 20;
        VALUE = 0.5f;
        STR = "XYZ";

        // 出力.
        Console.WriteLine(NUM); // NUMを出力.
        Console.WriteLine(VALUE);   // VALUEを出力.
        Console.WriteLine(STR); // STRを出力.

    }

}

こう書く。

ビルドエラー
ビルドエラー

ビルドエラー。
なので、

とすると、

こうなる。
こうなる。

こうなる。

Sample/cs/const/const/src/const_ at master · bg1bgst333/Sample · GitHub

逐語的文字列リテラル

ダブルクォーテーション("")の前に、'@'を付けることでそのままの文字列として解釈する。

逐語的テキストと文字列 - @ - C# reference | Microsoft Learn

MainClass.csで、

こう書く。

こうなる。
こうなる。

こうなる。

Sample/cs/VerbatimStringLiteral/VerbatimStringLiteral/src/VerbatimStringLiteral at master · bg1bgst333/Sample · GitHub

String.Empty

String.Emptyは、空文字列を表す。

String.Empty フィールド (System) | Microsoft Learn

MainClass.csで、

こう書く。

strは、nullではなく、String.Emptyによって""になっている。
strは、nullではなく、String.Emptyによって""になっている。

strは、nullではなく、String.Emptyによって""になっている。

こうなる。
こうなる。

こうなる。

Sample/dotnet/String/Empty/src/String_ at master · bg1bgst333/Sample · GitHub

String(value)

Stringのコンストラクタにchar型配列を渡して初期化も出来る。

String コンストラクター (System) | Microsoft Learn

MainClass.csで、

こう書く。

こうなる。
こうなる。

こうなる。

Sample/dotnet/String/String_value/src/String_ at master · bg1bgst333/Sample · GitHub