プロパティの使いみち

クラスのプロパティは private メンバを簡単に読み出したいときに使う機能と考える方も多いようですが、それだけではありません。

その private メンバに味付けをして取り出せるのです。その実例を示します。

まずは下記のクラス定義のコードをご覧ください。内部的に長さをミリメートルという値を保持しますが get プロパティにより、マイクロメートル、ミリメートル、センチメートル、メートル、で味付けして値を取り出すことが可能です。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace myapp
{
	public class LengthObject
	{

		private int m_MilliMeter = 0;

		public int    MicroMeter { get { return ( m_MilliMeter * 1000 ); }}
		public int    MilliMeter { get { return ( m_MilliMeter ); }}
		public double CentiMeter { get { return ( (double)( m_MilliMeter )/(double)(   10.0 )); }}
		public double Meter      { get { return ( (double)( m_MilliMeter )/(double)( 1000.0 )); }}

		public LengthObject()
		{
		
		}

		public bool SetMilliMeter( int milli_meter )
		{
			m_MilliMeter = milli_meter;
			return true;
		}

	}
}

これをコールする側の WindowsForms アプリケーションのコードを示します。プロパティによって違った単位で値を取り出すことができます。

using System;
using System.Text;
using System.Windows.Forms;

namespace myapp
{
	public partial class Form1 : Form
	{

		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click( object sender, EventArgs e )
		{

			LengthObject TheLenObj = new LengthObject();
	
			TheLenObj.SetMilliMeter( 1500 );

			StringBuilder sb = new StringBuilder();

			sb.AppendLine( String.Format( "{0} um", TheLenObj.MicroMeter ));
			sb.AppendLine( String.Format( "{0} mm", TheLenObj.MilliMeter ));
			sb.AppendLine( String.Format( "{0} cm", TheLenObj.CentiMeter ));
			sb.AppendLine( String.Format( "{0} m", TheLenObj.Meter       ));

			MessageBox.Show( sb.ToString().Trim() );

		}

	}
}