新規記事の投稿を行うことで、非表示にすることが可能です。
2018年05月16日
【018】文字型 と 1文字の文字列型
文字型 と 1文字の文字列型
下記のプログラムの説明です。
(1)
文字型配列(Char[]型) c を作ります。
Char[] c = new Char[] { 'あ', 'い', 'う' };
foreach文で1文字ずつ取り出しています。
foreach (Char val in c)
{
Console.Write($"{val} ");
}
(2)
文字列型(String型)のコンストラクタに引数として c を渡し、文字列 s を作っています。
String s = new String(c) + "えお"; (ついでに、"えお" を加えました。)
foreach文で1文字ずつ取り出す場合は、Char型文字として取り出すことになります(String型で取り出そうとするとエラーになります)。
foreach (Char val in s)
{
Console.Write($"{val} ");
}
for文で、s[i] を使って1文字ずつ取り出すこともできますが、
for(var i = 0; i < s.Length; i++)
{
Console.Write($"{s[i]} ");
}
この場合でも、
Console.WriteLine(s[0].GetType().FullName);
として 型を調べると Char型です。
(3)
上の結果から、1文字の場合は必ずChar型になってしまうような気がしますが、
String s1 = "あ";
Console.WriteLine(s1.GetType().FullName);
の結果は String となるので、この場合は、1文字でも文字列型であることがわかります。
(4)
文字型の1文字を、文字列型に変換しています。
Char c1 = 'さ';
String s2 = c1.ToString();
1文字の文字列型を、文字型に変換しています。
Char c2 = s2[0];
using System;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
// (1) 文字型の配列
Char[] c = new Char[] { 'あ', 'い', 'う' };
Console.WriteLine(c);
Console.WriteLine(c.GetType().FullName);
foreach (Char val in c)
{
Console.Write($"{val} ");
}
Console.Write("\n\n");
// (2) 文字列型
String s = new String(c) + "えお";
Console.WriteLine(s);
Console.WriteLine(s.GetType().FullName);
foreach (Char val in s)
{
Console.Write($"{val} ");
}
Console.WriteLine();
for (var i = 0; i < s.Length; i++)
{
Console.Write($"{s[i]} ");
}
Console.WriteLine();
Console.WriteLine(s[0].GetType().FullName);
Console.WriteLine();
// (3)
String s1 = "あ";
Console.WriteLine(s1.GetType().FullName);
Console.WriteLine();
// (4)
Char c1 = 'さ';
String s2 = c1.ToString();
Console.WriteLine(s2.GetType().FullName);
Char c2 = s2[0];
Console.WriteLine(c2.GetType().FullName);
}
}
}