using System;
class Distance             //在.netC#中,访问权限不写表示什么?
{
  float start,finish;
  public float Start     //在本方法中,get和set,start还没有初始化,怎么就可以get{return start;}
  {
   get{return start;}             //??????是不是set和get方法两个在使用时必须同时出现
   set{if(start>=0)start = value;}//?????value这个变量没有定义怎么就可以使用
  }
 /**************************************/ 
  
  public float Finish
  {
   get{return finish;}
   set{if(finish>=start)finish = value;}//??????value这个变量没有定义怎么就可以使用
  }
  
 /**************************************/ 
  
  public float Length
  {
    get{return (finish-start);}
  }
}/**************************************/
public class MainClass
{
 public static void Main()
 {
   Distance d = new Distance();
   d.Start = -5;                      //????怎么可以对一个对象的方法名进行赋值!
   d.Finish = 10;                     //????怎么可以对一个对象的方法名进行赋值!
   float length = d.Length;
   Console.WriteLine(d.Start);//-5
   Console.WriteLine(d.Finish);//10
   Console.WriteLine(d.Length);//15
 }
}
运行结果:-5 10 15//在本程序中,我在主类中输入Start=-5,Finish=10,而在上面的方法中,start必须>0才能赋值,那为什么执行结果的length还是等于15呢?

解决方案 »

  1.   

    因为你定义的变量没有赋初值,默认识0。所以if(start> =0)和if(finish> =start)始终是为真的 
      

  2.   

     set{if(start> =0)start   =   value;}//?????value这个变量没有定义怎么就可以使用 
        } 
    value是属性的值  就是Finish 的值  具体查msdn吧,  d.Start   =   -5;                                             //????怎么可以对一个对象的方法名进行赋值! 
          d.Finish   =   10;                                           //????怎么可以对一个对象的方法名进行赋值!是属性 不应该叫方法吧  --不确定   应该叫函数成员吧
      

  3.   

     public   float   Start
        { 
          get{return   start;}
          set{if(start> =0)start   =   value;}
        } 
    楼主理解有误,这不是方法,你可以把它当成一个变量。 public   float   Start
        { 
          get{return   start;}
        } //声明了一个Start,类型为float的变量,而且是只读的。
     
        public   float   Start
        { 
          set{if(start> =0)start   =   value;}
        } //声明了一个Start,类型为float的变量,而且是只可写的。
    你刚学,其它的先不用理会,只把它当成变量即可。
      

  4.   

    public   float   Start
        { 
          get{return   start;}
        } 
    属性而已,属性好处就是获取值前会有很多判断,或者处理其他事务,更重要是
    安全