原创 导弹能否摧毁目标?一个简单的例子说明c# 中property(性质)的用法

c#中的property,在我语境中,我把它翻译成性质,它的英语本意也是性质。一个类的对象的性质,完全可以用类的成员变量(member variable)来体现,为什么还要引入property呢?

这首先要从c#语言的设计思想来说。C#的一大特性就是封装。你看,它的namespace,它的类,都是要用大括号括起来的。函数必须是在类里括起来,即使它是程序入口的static void main()。强封装带来的就是强隐私性。

如果明了了c#的封装和隐私性的主要特性。那就很好理解property的引入了。在成员变量是隐私的情形下,又需要对外,那就用property好了。

假设有一种秘密型号的导弹,它的射程和弹头当量是保密的,相当于隐私的成员变量;但是它能否摧毁既定目标是需要让外界知道的,以发挥其威慑作用,这就是它的性质(property)。我们在建立导弹类的时候,设置两个私有变量:射程和弹头当量;再设置一个公有性质,为布尔变量。如果能摧毁目标,则该变量为真。这个公有的能否摧毁性质可以被外界所知,它是由上述两个私有变量计算来的。但是这两个私有变量是外界不可见的。

下面是完整的c#代码

using System;

namespace MissileQuality
{
class Missile	{
	private String type;//型号.
	private int range;//射程,单位:公里.
	private int equiv;//当量,单位:万吨TNT.
	public Missile(string typestr)//在导弹初始化的时候,输入导弹的型号
		{
		type = typestr;
		if(type=="DF21D")
			{
			range = 3200;
			equiv = 30;
		    }
		}
	public bool IsDestroy{	//以下,根据射程和当量,计算出能否摧毁的性质.注意public声明符,这个性质是公开的!!!
		get{
			if (range>=1759 && equiv >= 5 )
				return true;
			else
				return false;
			}
						}
	public void Launch()
		{
		Console.WriteLine("fired and throwed to the objective");
		}
	           }
				
class Program  {
	public static void Main(string[] args)
		{
		Missile m = new Missile("DF21D");//新建一枚导弹,型号是“DF21D”
		if(m.IsDestroy == true) //在本类(Program 类 ),用到了这枚导弹的性质————能否摧毁.导弹的射程和当量是保密的,
								//但是能否摧毁是要让外界知道的,可以在声明类以外的类使用
			Console.WriteLine("this missile insure destroying the objective");
		
		Console.Write("Press any key to continue . . . ");
		Console.ReadKey(true);
		}
               }
}



上面这个例子,很好地说明了C#的封装特性,和property引入的意义。

如果是细心的朋友,会发现range>=1759,这个1759是怎么来的呢?

它是从海南岛中心到九段线最远处的距离。少年当自强。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值