p.66 列挙型
・整数値に名前を付けてグループにて型にしたもの。
・例: グーは0番、チョキは1番、パーは3番とするとき「次の手 = 0」とするより「次の手 = グー」とした方が分かりやすく、
可読性が上がる
・このグループ名を列挙名、要素を列挙子という
・C#が提供するライブラリの中にも列挙型があり、広く用いられている
例: https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.keys Keys列挙型
・書式: enum 列挙名 { 列挙子, … }
・列挙子には自動的に0から整数があてはめられるが、代入も可能
・書式: enum 列挙名 { 列挙子 = 整数値, … }
・「 = 整数値」を指定しない場合、先頭は0、それ以降は1っ前の列挙子の値+1になる。
アレンジ演習:p.68 enum01.cs
・列挙子をint型にキャストせずに表示するとどうなるか確認しよう ⇒ 列挙子がそのまま表示される ・列挙子の持つ整数をint型の変数に代入できるかどうか確認しよう
作成例
//アレンジ演習:p.68 enum01.cs
using System;
class enum01
{
enum MyMonth { //列挙名 MyMonthの定義
Jan = 1, Feb, Mar, Apr, May, Jun, Jul,
Aug, Sep, Oct, Nov, Dec //先頭が1なので2,3,4,5,…,12になる
};
public static void Main()
{
//列挙子の持つ整数をint型として扱うにはキャストする
Console.WriteLine("Aprは{0}月", (int)MyMonth.Apr); //Aprは4月
Console.WriteLine("Mayは{0}月", (int)MyMonth.May); //Mayは5月
Console.WriteLine("Aprは{0}", MyMonth.Apr); //【追加】AprはApr
int x = (int)MyMonth.Apr; //【追加】int型変数への列挙子の代入にも型キャストが必要
}
}
p.69 3.14 オブジェクト型とボックス型:割愛し「第7章 クラス」「第6章 配列」で説明します
p.73 3.15 文字列型
・文字列は0文字以上の文字がならんだもので、文字数は確定しない ・文字列はstring型(.NETではSystem.String型)で扱える ・C#では文字列を(後述する)クラスで扱うので、文字数を得たり、比較したり、コピーしたりするための仕掛(プロパティ、文字配列、 メソッド)が用意されている ・ここではクラス、プロパティ、配列、メソッドの詳細は後回しにして、便利な仕掛を理解しておこう
アレンジ演習:string01.cs
・コンソールに「文字列:」と表示し、文字列を入力したら、何文字あるか表示する処理を追加しよう
作成例
//アレンジ演習:p.73 string01.cs
using System;
class string01
{
public static void Main()
{
string str = "今日はよい天気です";
string mystr;
char c;
// Lengthプロパティ(後述)で文字列の長さを調べる
Console.WriteLine("strは長さ{0}です", str.Length);
//文字型変数cに文字列strの5番目の文字を代入
c = str[4]; //文字列を文字の配列(後述)として扱える
Console.WriteLine("文字列の5番目の文字は「{0}」です", c);
//文字列strをmystrにコピー
mystr = String.Copy(str); //静的メソッド(後述)を用いる
Console.WriteLine("mystr = {0}", mystr);
//文字列の検索
int n = str.IndexOf('は'); //メソッドに文字を与えて用いる
Console.WriteLine("文字列に'は'が出てくるのは{0}番目の文字", n + 1);
n = str.IndexOf("よい"); //メソッドに文字列を与えて用いるオーバーロード(後述)
Console.WriteLine("文字列に「よい」が出てくるのは{0}文字目から", n + 1);
//【以下追加】
Console.Write("文字列:");
string name = Console.ReadLine();
Console.WriteLine("{0}は{1}文字です。", name, name.Length);
}
}
p.75「is演算子とas演算子」は割愛します
p.78 練習問題1 ヒント ex0301.cs
・うるう年を考えないので、1年の秒数は60秒×60分×24時間×365日で算出できる
作成例
//p.78 練習問題1 ex0301.cs
using System;
class ex0301
{
public static void Main()
{
Console.WriteLine("1年は{0}秒", 60 * 60 * 24 * 365);
}
}
提出:p.78 練習問題2 ex0302.cs
p.78 練習問題2 ヒント ex0302.cs
① 円の半径を格納するためのdouble型の変数rを宣言 ②「半径:」と改行なしで表示 ③ コンソールから入力を受け取り、double.parseメソッド(p.46参照)で実数化して変数rに格納 ④ 円周率Math.PIと変数rの2乗を掛けた結果を面積として表示 【自由参加課題】この半径の球の体積も表示しよう