1

初歩的な質問です、すみません。私はしばらくの間、この配列にオブジェクトを追加する方法を見つけようとしていました。Employee クラス、Emp から継承する Salary クラス、および継承する Hourly クラスがあります。このような配列を作成しました。

        public Employee[] _Employees;
        ...    
        Employee[] _Employees = new Employee[]{ 
        new Hourly("1000", "Harry","Potter", "L.", "Privet Drive", "201-9090", "40.00", "12.00"),
        new Salary("2201", "A.", "A.", "Dumbledore", "Hogewarts", "803-1230", "1200"),
        new Hourly("3330", "R.","Weasley", "R.", "The Burrow", "892-2000", "40", "10.00"),
        new Salary("4040", "R.", "R.", "Hagrid", "Hogwarts", "910-8765", "1000")
                                                    };

そして今、テキスト ファイルから読み込んだ配列にオブジェクトを追加したいと考えています。私は今このようにしています。

                      if(rstring == "H")
                {
                    string fullName = data.ReadLine();
                    string empNum = data.ReadLine();
                    string address = data.ReadLine();
                    string phoneNum = data.ReadLine();
                    string hrWorked = data.ReadLine();
                    string hrRate = data.ReadLine();

                    string[] splitName = fullName.Split(new Char[] { ' ' });

                    string fName = splitName[0];
                    string mName = splitName[1];
                    string lName = splitName[2];

                     _MyForm._Employees = new Employee[] {new Hourly ( empNum, fName, mName, lName, address, phoneNum, hrWorked, hrRate ) };

エラーは発生しませんが、 _Employees クラスに格納されているものを見ると、上記の情報だけが含まれており、他には何もありません。自分自身をよりよく説明する必要がある場合はお知らせください。別の方法で処理する必要があるかどうか、またはこの _Employees クラスに読み取り情報を追加するために何をする必要があるかを教えてください。

4

3 に答える 3

2

配列を使用する代わりに、List<Employee>. これにより、自分で再作成することなく、任意の数の要素をリストに追加できます。

private List<Employee> employees = new List<Employee>();
public IList<Employee> Employees { get { return this.employees; } }

// ...
this.employees.Add(new Hourly("1000", "Harry","Potter", "L.", "Privet Drive", "201-9090", "40.00", "12.00"));
// .. Add all

次に、新しいものを追加する場合は、次を使用できます。

_MyForm.Employees.Add(new Hourly ( empNum, fName, mName, lName, address, phoneNum, hrWorked, hrRate));
于 2012-09-25T15:52:05.463 に答える
2

Listこの場合、 a を使用したほうがよいでしょう。

IList<Employee> _Employees;

リストには、Add新しいオブジェクトを配列の最後に追加するために使用できるメソッドがあるという利点があります。

_MyForm._Employees.Add(new Hourly(...))

コレクション内の他のポイントにオブジェクトを挿入したい場合は、Insert追加するオブジェクトとともにインデックスを取得するメソッドもあります。

于 2012-09-25T15:52:46.670 に答える
1

他の人が指摘しているように、ListクラスとAddメソッドを使用します。ここで行ったこと:

_MyForm._Employees = new Employee[] 

サンプルコードでは、MyForm._Employeesの参照を、追加されていないタイプEmployee[]の新しいオブジェクトに再割り当てしています。他の貴重な従業員を含む以前の参照は、ガベージコレクションされている可能性があります(範囲内で他に参照されていない場合)。

正直に言うと、配列は避けたいと思います。詳細については、これを参照してください。

于 2012-09-25T16:03:45.987 に答える