第一个是赋值。
后面的是属性Property的设置方法。name应该是private的,Name才是Public的

解决方案 »

  1.   

    属性本来就是两种 set、get 函数的封装。在c#,属性岂不是比你自己写函数更方便?你可以把原本针对字段进行读写的代码,毫不费力地改为针对属性的,从而扩展读写功能。
      

  2.   

    c#的属性,你可以理解为公共方法。
    set
     {
              name  =value ;
     }
    等同于
    void SetName(string value)
    {
        name  =value ;
    }get 
                {
                    return name;
                }
    等同于
    string GetName()
    {
           return name;
    }
    再来逐一回答你的问题:
    1.st.Name="luo"===》因为是赋值,那执行的就是set里面的代码name  =value ;
    2.public string name;与public string Name{}不一样,一个是变量一个是属性(你可以认为是方法)
    3.这段什么意思啊,怎么感觉这是函数啊。?set,get,vlaue这又是什么啊??===》最开始已经回答你了。
      

  3.   

    1.我想问下st.Name="luo"什么意思?
    就是给学生实例st的名字属性赋值的意思。2public string Name这句话不是定义一个共有的变量吗?
    这么写是有问题的,作为成员还是用private隐藏起来,外部只能通关过Name属性来访问这个成员。
      

  4.   

      student st = new student();
      st.Name = "luo";
      Console.WriteLine(st.Name);
    这段代码就是实例化一个学生对象,然后给这个学生赋上名字,console那句只是显示赋值后的效果。
    public class student
         {
             public string name;
             public string Name
             {
                 get 
                 {
                     return name;
                 }
                 set
                 {
                     name  =value ;
                 }
             }
          
         }
    这个定义类学生类。有1个成员和1个属性。
    public string name;  这里应该改成私有。
    外部要给学生名字赋值和读取名字都要通过属性来进行。
    属性术语特殊方法,里面有set,get操作元,可以做一些逻辑控制,还可以做异常捕获等等。
    get操作元用于外部获取属性值;set操作元用于外部给属性赋值,其中的value就是外部付给的值,它的类型就是属性类型。
      

  5.   

    最初,你可能写public class student
          {
              public string Name;
          }然后针对字段 Name 进行读写。等你过一段时间,发现需要将 Name 的读写变为函数/方法,以便扩展其功能。例如如果有人输入了小写字母,你想把第一个字符变为大写。你这时候可以直接改写为public class student
          {
              public string name;
              public string Name
              {
                  get 
                  {
                      return name;
                  }
                  set
                  {
                      name  =value ;
                      if(name.Length>0)
                     {
                         string x = name.SubString(0,1).ToUpper();
                         if(name.Length>1)
                             x += name.SubString(1);
                        name = x;
                     }
                  }
              }
           
          }这时候,你只需要修改这一处代码,原来使用 Name 字段的代码都不用修改,直接使用 Name 属性就行了。
      

  6.   

    public string name; 写为  private string name;当然是更为恰当的。因为原本就是想让外界仅仅访问 Name,而不是 name。
      

  7.   

    如果你用过 Java,你可以看到 Java 模拟属性是这么写的,比如:属性名叫 Namepublic string getName() { ...... }
    public void setName(string name) { ...... }然后用的时候是这样的string name = person.getName();
    person.setName(name);C# 是这样的:public string Name { get; set; }string name = person.Name;
    person.Name = name;
    你觉得哪一个看上去更自然呢?!
      

  8.   

    楼上已经解释得很清楚了,在外部访问的时候属性就相当于字段
    但是相对于字段,属性能提供更细粒度的访问限制(只读:删掉set,只写:删掉get)
    并且能在设置时检验数据有效性,或者进行一些转换,因为st.Name="luo"实际上运行了一个方法
    效率问题不用担心,如果方法很小的话编译器会隐式内联
      

  9.   

    使用属性存储用户编号和姓名
    private string id = "";//定义一个string类型的变量,用来记录用户编号
            private string name = "";//定义一个string类型的变量,用来记录用户姓名
            /// <summary>
            ///定义用户编号属性,该属性为可读可写属性
            /// </summary>
            public string ID
            {
                get
                {
                    return id;
                }
                set
                {
                    id = value;
                }
            }
            /// <summary>
            ///定义用户姓名属性,该属性为可读可写属性
            /// </summary>
            public string Name
            {
                get
                {
                    return name;
                }
                set
                {
                    name = value;
                }
            }