日期:2014-05-18  浏览次数:21361 次

this.name = name;啥意思啊,吓死人了
第一个段代码
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,我知道索引的时候用到

------解决方案--------------------
区别只在于第二段代码中的m_name能被外部访问,其余一致
C# this关键字引用当前对象实例的成员。
不用也没关系,我的体会是用this可以出智能感知,方便点
------解决方案--------------------
2种写法效果一样,this这个地方就是class Person
------解决方案--------------------
String name;
字段
通过构造函数赋值
属性比字段更面向对象,具体就体现在封装性上。 
字段不能进行控制,而属性可以解决这样的问题
字段用于存储类或结构满足其设计所必须拥有的数据。类和结构使用字段封装数据。字段通常应为 private。外部类应该通过方法、属性或索引器间接访问字段。
------解决方案--------------------


这个问题也问 确实吓死我了
------解决方案--------------------
探讨

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

------解决方案--------------------
多多看书。
------解决方案--------------------
this在这里代表当前对象实例
------解决方案--------------------
this就是指当前操作的对象,比如说你在Form1中的Form1.cs中编写代码,this就是指Form1,this.Text就是Form1的标题,第一种写法的this.name是指当前对象的局部变量,而构造函数是外部调用这个类是传递的参数,这个意思是将外部传入的参数传递给本对象的变量name
------解决方案--------------------
楼上的解释很准确了。
要详细点就去MSDN
------解决方案--------------------
探讨

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

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

------解决方案--------------------
还是先看看书
------解决方案--------------------
this是指当前对象
专业的解释不会,简单来说就是,你定义1个变量,但是又传进了
1个名字类型都一样的参数,这时候需要用this区分,this.name就是
指你定义的变量,而name就是传入参数
------解决方案--------------------
如果把第一个代码改成:
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
------解决方案--------------------
探讨
如果把第一个代码改成:
class Person
{
public String name;
public Person(String name)
{
this.name = name;
}
}
那这两段代码就完全一样了,this在这的作用就是区分开两个name变量
this.name 是生命的public string name
= 后边那个……

------解决方案--------------------
this.name中的name指的是类的字段变量,=name指的是构造函数参数,只是一个参数名而已,形参,当调用时传入具体的值,实参
------解决方案--------------------
楼上都说了,恭祝楼主春节愉快。
------解决方案--------------------