|
分類:[C# (Windows)]
言語 Visual C#2005
開発環境 Windows Xp Home Edition
要点:
クラスの中に配列をメンバとした構造体の配列があります。
このメンバをプロパティとしてアクセスしたいのですが記述の方法がわかりません。
アクセサの記述方法を教えていただけないでしょうか。
よろしくお願いいたします。
詳細:
myClassの中にMyStructTypeの構造体の配列myStructがあります。
このmyStructの中にMyStructIntMenberの配列とMyStructBoolMemberの配列があります。
インデクサを使用するとMyStructIntMenberまたはMyStructBoolMemberのどちらかのアクセサの記述はできます。
私の希望としてはMyStructIntMenberとMyStructBoolMemberのそれぞれをクラスのプロパティとしてアクセスするアクセサの記述方法が知りたいのです。
サンプル:
新規プロジェクトにtextBox1とmenuStrip1を貼り付けてあります。
=================================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace win_accessor {
public partial class Form1 : Form {
private MyClass myClass;
public Form1() {
InitializeComponent();
myClass = new MyClass();
}
private class MyClass {
private struct MyStructType {
public int[] MyStructIntMember;
public bool[] MyStructBoolMember;
}
private MyStructType[] myStruct;
// 初期化
public MyClass () {
myStruct = new MyStructType[20];
for (int i = 0; i < myStruct.Length; i++) {
myStruct[i].MyStructIntMember = new int[5];
for (int j = 0; j < myStruct[i].MyStructIntMember.Length; j++) {
myStruct[i].MyStructIntMember[j] = 0;
}
myStruct[i].MyStructBoolMember = new Boolean[10];
for (int j = 0; j < myStruct[i].MyStructBoolMember.Length; j++) {
myStruct[i].MyStructBoolMember[j] = false;
}
}
}
// インデクサによるアクセサ
public int this[int a, int b]{
get {
return myStruct[a].MyStructIntMember[b];
}
set {
myStruct[a].MyStructIntMember[b] = value;
}
}
}
// プロパティのアクセスの実験(読み出し)
private void toolStripMenuItem2_Click(object sender, EventArgs e) {
textBox1.AppendText(myClass[1, 1].ToString() + "\r\n");
}
// プロパティのアクセスの実験(書き込み)
private void toolStripMenuItem3_Click(object sender, EventArgs e) {
myClass[1, 1] = 1;
}
}
}
|