アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2018年05月04日

【010】文字列型(1)


 文字列型(1)

 【文字列型の型名
 文字列型の型名は、
   .NET では String です。
   C# においては、String とともに、String の別名である string を使用できます。

 【文字列型の比較
 文字列型は参照型ですから、オブジェクトを比較演算子で比較する際には、「値」だけでなく、「参照先」についても考慮が必要です。
 参照型オブジェクトの比較を、
   「 == 」演算子
で行う場合、値が同じであっても参照先が異なれば False になります。

 ただし、String型の比較に限っては、「 == 」演算子は「値」だけを比較して結果を返します()。
Stringクラス内で、「 == 」演算子がそのように定義されているからです。


 下記のプログラムでは、
   str1 と str2 は同一のオブジェクトを参照しています。
   str1 と str3 は異なるオブジェクトを参照していますが、値は同じです。 
したがって、「 == 」演算子での比較結果は @,A共 True となります。

 B,C は、値を比較する Equalsメソッドによる比較ですから、ともに True です。

 参照先を比較する ReferenceEqualsメソッドによる結果は、
当然、D が True、E が False となります。

 F,G では、string型を Object型にキャストした上で、「 == 」演算子による比較を行っています。
Object型に対しては、上述ののような定義はありません。
よって、F が True、Gが False となります。


using System;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
String str1 = "aaa";
String str2 = "aaa";
String str3 = new string('a', 3);


Console.WriteLine(str1 == str2); // @ True
Console.WriteLine(str1 == str3); // A True

Console.WriteLine(str1.Equals(str2));
// B True
Console.WriteLine(str1.Equals(str2));
// C True

Console.WriteLine(ReferenceEquals(str1, str2));
// D True
Console.WriteLine(ReferenceEquals(str1, str3));
// E False

Console.WriteLine((Object)str1 == (Object)str2);
// F True
Console.WriteLine((Object)str1 == (Object)str3);
// G False
}
}
}



ファン
検索
<< 2018年05月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
最新記事
写真ギャラリー
最新コメント
タグクラウド
カテゴリーアーカイブ
月別アーカイブ
プロフィール
×

この広告は30日以上新しい記事の更新がないブログに表示されております。