using System;
// 構造体
struct Member
{
public string name;
public int age;
public string country;
// パラメーター付きコンストラクタ
public Member(string n, int a, string c)
{
name = n;
age = a;
country = c;
}
}
// 構造体の配列をメンバに持つクラス
class Group
{
// 配列asiaにコピーしたデータ数
int asiacnt;
// Member型の配列 サイズ5
Member[] asia = new Member[2];
// 配列asiaに構造体のパラメータを追加
public bool addAsia(Member c)
{
// 配列のサイズにまで追加
if (asiacnt < asia.Length)
{
// Member型のデータをコピー
asia[asiacnt++] = c;
return true;
}
return false;
}
// 配列asiaの要素を表示
public void displayAsia()
{
foreach (Member m in asia)
{
// countryがないものは表示しない
if (m.country != null)
{
Console.WriteLine("{0} {1} {2}",
m.name, m.age, m.country);
}
}
}
// 配列asiaの要素を返す
public Member getAsia(int x)
{
try
{
return asia[x];
}
catch(Exception error)
{
// 例外の原因の詳細情報を表示
Console.WriteLine(error.Message);
// 例外の場合は空のMemberを返す
return new Member();
}
}
}
class MainClass
{
static void Main()
{
Group g = new Group();
// Member型のデータを追加
g.addAsia(new Member("Kamimura",10,"日本"));
g.addAsia(new Member("Kamimura1",20,"中国"));
g.addAsia(new Member("Kamimura2",30,"韓国"));
/* 追加したMemberを表示
* 配列のサイズを2にしたのでKamimura2 30 韓国は
* 表示されない */
g.displayAsia();
// インデックス0のメンバを取得
Member m = g.getAsia(0);
// 取得したメンバのcountryを表示
Console.WriteLine(m.country);
// インデックスのサイズ2を超えた場合
m = g.getAsia(10);
/* 例外の原因の詳細情報が表示されてから
* 何も表示されない行が出力される */
Console.WriteLine(m.country);
}
}
0 コメント:
コメントを投稿