私はアクセサーのメソッドと列挙について学んでいます。名前空間 'Vehicles'の下にパブリッククラス 'Car'を作成し、_manufacturer、_model、_year、_colorなどのプライベートプロパティを設定しました。私はプロパティにアクセスするためのメソッドと、それらを設定/更新するメソッドを記述したいと思います。プライベートオブジェクトのプロパティのアクセサメソッドの作成 - 列挙?
using System;
namespace Vehicles
{
public class Car
{
private string _manufacturer;
private string _model;
private string _year;
private string _color;
public void honkHorn()
{
// Add argument for a file name?
// Code here to play a WAV file?
MessageBox.Show("Honk!");
}
public string getCarInfo(string whichProperty)
{
switch (whichProperty)
{
case ("manufacturer"):
return _manufacturer;
case ("model"):
return _model;
case ("year"):
return _year;
case ("color"):
return _color;
default:
return null;
}
}
public void setCarInfo(string whichProperty, string newValue)
{
switch (whichProperty)
{
case ("manufacturer"):
_manufacturer = newValue;
break;
case ("model"):
_model = newValue;
break;
case ("year"):
_year = newValue;
break;
case ("color"):
_color = newValue;
break;
}
}
}
}
そして、これは私のフォームです::これは私のクラスである
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Vehicles;
namespace CS_Enumeration
{
public partial class Form1 : Form
{
public Car myCar = new Car();
public Form1()
{
InitializeComponent();
myCar.setCarInfo("manufacturer", "Ford");
labelManfValue.Text = myCar.getCarInfo("manufacturer");
myCar.setCarInfo("model", "Ranger");
labelModelValue.Text = myCar.getCarInfo("model");
myCar.setCarInfo("year", "2012");
labelYearValue.Text = myCar.getCarInfo("year");
myCar.setCarInfo("color", "Blue");
labelColorValue.Text = myCar.getCarInfo("color");
}
private void button1_Click(object sender, EventArgs e)
{
myCar.honkHorn();
}
}
}
は、これは本当に設定/取得することができ、単一のメソッドを作成するための最良の方法ですか?最初にオブジェクトプロパティの名前と一致する文字列値をキャストしようとしましたが、実際のプロパティは返されましたが、(文字列をオブジェクトプロパティにキャストする方法が分からない限り)動作しません。
返信いただきありがとうございます。これは私が読んでいる本のすべての運動です。それは、すべてが公表されるべきではないと言われていますが、すべてがプライベートであるべきではないということも述べています。どうすれば公的/私的でないべきかを知ることができますか?この本のようなサウンドは、良いコーディングデザインが間違った方向に私を導いています。誰でも、Visual C#のコーディングデザインの優れた習得方法を学ぶための書籍の提案はありますか?
なぜこれをやりますか?今これは恐ろしいデザインです - プロパティを公開するだけです。その上に、あなたの現在のアプローチですべての型の安全性が失われ、すべてのタイプミスがランタイム例外を引き起こします – BrokenGlass
オリジナルの投稿への編集を参照してください。これはすべて、私が読んでいるC#の本に基づいており、プライベート変数を使用することが推奨されています。私は、ちょっとばかげているプロパティを取得/設定するために行っていたことから見ることができます。ありがとう。 – spickles
どのような本ですか?私たちはそれを無視し、おそらくそれを嘲笑したいと思います。 –