第一个段代码
class Person
  {
       String name;
       public Person(String name)
        {
       this.name = name;
         } 
   }第二段代码
class Person
  {
     public string m_name;
     public Person(string name)  
      {
         m_name = name;            
      }
  } 
构造函数不是下面那种写法吗,name是参数,把传入的值赋给m_name;那上面那种写法啥意思呢,请解释一下,另外,就是this的用法,哪些时候会用到this,我知道索引的时候用到

解决方案 »

  1.   

    区别只在于第二段代码中的m_name能被外部访问,其余一致
    C# this关键字引用当前对象实例的成员。
    不用也没关系,我的体会是用this可以出智能感知,方便点
      

  2.   

    2种写法效果一样,this这个地方就是class Person
      

  3.   

    String name;
    字段
    通过构造函数赋值
    属性比字段更面向对象,具体就体现在封装性上。 
    字段不能进行控制,而属性可以解决这样的问题
    字段用于存储类或结构满足其设计所必须拥有的数据。类和结构使用字段封装数据。字段通常应为 private。外部类应该通过方法、属性或索引器间接访问字段。
      

  4.   

    如果第一段的string name前加上public 呢,是不是也可被外部访问呢
      

  5.   


    正解楼主,你举的2个例子其实区别仅在于 name 和 m_name 的访问级别下面的代码你参考下// 属性,在实例化时为其赋值,之后无法在外部赋值
    public class Person
    {
        public string Name { get; protected set; }
        public Person(string personName) { this.Name = personName; }
    }// 属性,在实例化时为其赋值,之后可以在外部赋值
    public class Person
    {
        public string Name { get; set; }
        public Person(string personName) { this.Name = personName; }
    }// 字段,在实例化时为其赋值,无法在外部访问
    public class Person
    {
        string Name;
        public Person(string personName) { this.Name = personName; }
    }// 字段,在实例化时为其赋值,可以在外部访问
    public class Person
    {
        public string Name;
        public Person(string personName) { this.Name = personName; }
    }
      

  6.   

    this就是指当前操作的对象,比如说你在Form1中的Form1.cs中编写代码,this就是指Form1,this.Text就是Form1的标题,第一种写法的this.name是指当前对象的局部变量,而构造函数是外部调用这个类是传递的参数,这个意思是将外部传入的参数传递给本对象的变量name
      

  7.   

    楼上的解释很准确了。
    要详细点就去MSDN
      

  8.   

    MSDN上面,我没找到this的用法
      

  9.   

    this是指当前对象
    专业的解释不会,简单来说就是,你定义1个变量,但是又传进了
    1个名字类型都一样的参数,这时候需要用this区分,this.name就是
    指你定义的变量,而name就是传入参数
      

  10.   

    如果把第一个代码改成:
    class Person
      {
      public String name;
      public Person(String name)
      {
      this.name = name;
      }  
      }
    那这两段代码就完全一样了,this在这的作用就是区分开两个name变量
    this.name 是生命的public string name
    = 后边那个name是public person(string name)这个里边的name
      

  11.   

    this.name中的name指的是类的字段变量,=name指的是构造函数参数,只是一个参数名而已,形参,当调用时传入具体的值,实参
      

  12.   

     this一般是指当前这个对象,, 上面跟下面基本上没什么本质上的差别,都是将传进来的值付给当前对象
      

  13.   

    C# 中默认访问修饰符为private的,也就是前面那个等同于类里的私有成员后面那个一m_name则是公开可见的
      

  14.   

    都是 给  字段赋值,只是 参数name 和字段name 同名,用 this来访问name字段 以示区分,下面那个 不同名,就没必要用this了,直接字段了。
      

  15.   

    吓死人了,怎么CSDN上的菜鸟越来越多
      

  16.   

    m_name就是第一段代码的字段name,一样,this.的意思是:本类 的
      

  17.   

    哦,对了,呵呵,没看清,不完全一样,一个是共有的,一个是C#默认是private的成员吧
      

  18.   

    this指当前类,这里也就是指person
      

  19.   

    this关键字引用当前对象的实例。
    可以了解一下变量的作用域。