-2

私はC#が初めてです。
フォーム デザインで、Textbox、Listview、およびボタンがあるとします。ボタンのコードを次のように記述します。

listBox1.Items.Add(textBox1.Text);

... Textbox から ListView にテキストを追加するだけです。

別の方法は次のとおりです。

Person.cs クラスを作成し、そこにこれを追加します

string FirstName;
public string FN {
    get { return FirstName; }
    set { FirstName = value; }
}

そして、ボタンにこれを追加します:

Student NewStudent = new Student();
NewStudent.FN = textBox1.Text;
listBox1.Items.Add(NewStudent.FN);

これら 2 つはまったく同じことを行います。
1 つ目は 1 行のコードしか必要としませんが、2 つ目は数行必要です。1行しか必要としない最初のものを使用しないのはなぜですか?

4

4 に答える 4

6

Student単一の名前がtextBox1.Textに、姓が にtextBox4.Text、年齢が にあることを覚えておくのではなく、プログラムのデータを適切なオブジェクトで構造化したい場合があるためですnumericUpDown15.Value。フォームに 2 人の学生がいて、それぞれに独自の名前があり、テキスト ボックスが異なる場合 (学生 1 の名前はtextBox7textBox15? でした) は、さらに厄介になります。一般的には避けるべきだと思います。

データ オブジェクトを使用すると、バックエンド コードやファイルからのデータの解析中など、GUI を使用できない場合でも、データ オブジェクトを自由に使用できます。少し面倒ですよね?

そのルート (データ オブジェクトを使用) を使用する場合は、データ バインディングを使用することもできます。これにより、入力コントロールと表示コントロールにデータの取得元が通知されます。FNテキスト ボックスをインスタンスのプロパティに直接バインドできStudent、値の更新を行うコードを記述する必要はありません。同様FNに、インスタンスをリストに直接配置したときにプロパティの値を表示するようにリスト ボックスに指示することもできStudentます (または、リスト ボックスを学生のコレクションにバインドすることもできます)。

Student次のようにクラスをモデル化することもできます。

class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullName { get { return FirstName + " " + LastName; } }
}

FirstName次に、2 つのテキスト ボックスをとにバインドします。LastNameリスト ボックスには が表示されますFullName

于 2013-08-01T07:17:06.100 に答える
1

彼らはまったく同じことをしません。目に見える効果は同じかもしれませんが、それだけではありません。

2 番目の例では、Student 型の新しいオブジェクトを作成しています。ほとんどの場合、このクラスには FirstName フィールドだけでなく、学生に関するあらゆる種類の情報が含まれている可能性があります。また、後でより意味のある処理を行うために、新しい Student オブジェクトをコレクションに追加する可能性も十分にあります。(たとえば、学生が購読できる Course オブジェクトを追加するか、何らかの方法で学生に関連付けられた Grade オブジェクトのコレクションを追加します。

これを行う「正しい」方法は、プログラムで何をしたいかによって完全に異なります。

于 2013-08-01T07:19:40.870 に答える