感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

リテラルとエスケープシーケンスについてのまとめ。C#でオブジェクトが等しいか確認するサンプル。

<スポンサーリンク>

C#リテラル

リテラルとは、プログラムのソースコードに使用される固定の値のこと。数字や文字列がそのまま記述される。
整数の値なら、整数リテラル浮動小数点であれば、浮動小数リテラルとなる。

「\」で始まる特殊な文字をエスケープシーケンスという。たとえば、改行(Line Feed)は[\n]と表す。
文字リテラルは任意の文字をシングルクオテーション(')で囲む。
文字列リテラルはダブルクォテーションで文字列を囲む。

C#には逐語的文字列リテラルというものがある。
これは、エスケープシーケンスを処理せず表記のまま解釈するリテラルのこと。
通常の文字列の先頭にアットマークをつけて表記する。
ファイルのパスを書くときなんかに使う。
@"\tmp\hoge.txt"みたいに。

エスケープシーケンスの一覧

\b:バックスペースのエスケープシーケンス
\t:タブのエスケープシーケンス
\r:行頭復帰のエスケープシーケンス
\":ダブルクォテーションのエスケープシーケンス
\':シングルクォテーションのエスケープシーケンス
\\:バックスラッシュのエスケープシーケンス
\0:null文字のエスケープシーケンス
\u:任意のUnicode文字。\uのあとに4桁のUnicode文字コード値を指定する。

C#のオブジェクトが等しいかどうかを判断するサンプル

Equalsメソッドは、2つのオブジェクトが等しいかを判断する。
・参照型の場合は同じオブジェクトを参照しているか
・値型の場合は値が等しいか
で判断する。
以下の例では、「同じオブジェクトを参照している確認」と「Equalsをオーバーライドした場合の確認」をためしてみる。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RootNameSpace
{
    public class Person
    {
        public string LastName;
        public string FirstName;

        public override bool Equals(object obj)
        {
            if (!(obj is Person))
            {
                return false;
            }

            Person person = (Person)obj;
            return (this.FirstName.Equals(person.FirstName)
                && this.LastName.Equals(person.LastName));
        }
    }

    public class Test
    {
        public static void Main(string[] args)
        {
            object a = new Object();

            //同じオブジェクトを参照する
            object b = a;

            Console.WriteLine("同じ場所を参照しているオブジェクトを比較した結果:" + a.Equals(b));

            Person person = new Person() { FirstName = "Akira", LastName = "Yamada" };

            Person person2 = new Person() { FirstName = "Yuka", LastName = "Sanagashi" };

            Person person3 = new Person() { FirstName = "Akira", LastName = "Yamada" };

            Console.WriteLine("姓名全て等しい場合:" + person.Equals(person3));

            Console.WriteLine("姓名が異なる場合:" + person.Equals(person2));
        }
    }
}

上記の実行結果は以下の通りになる。

同じ場所を参照しているオブジェクトを比較した結果:True
姓名全て等しい場合:True
姓名が異なる場合:False

勉強した本

C# ポケットリファレンス

C# ポケットリファレンス

一つ一つのサンプルが、項目ごとに完結して動くので、試しながら覚えることができる。
やっぱり、実際に動かすのが一番。