第一个段代码
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,我知道索引的时候用到
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,我知道索引的时候用到
C# this关键字引用当前对象实例的成员。
不用也没关系,我的体会是用this可以出智能感知,方便点
字段
通过构造函数赋值
属性比字段更面向对象,具体就体现在封装性上。
字段不能进行控制,而属性可以解决这样的问题
字段用于存储类或结构满足其设计所必须拥有的数据。类和结构使用字段封装数据。字段通常应为 private。外部类应该通过方法、属性或索引器间接访问字段。
正解楼主,你举的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; }
}
要详细点就去MSDN
专业的解释不会,简单来说就是,你定义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
可以了解一下变量的作用域。