学c#没多久,写程序很多都是照搬教材的,例如下面这段,使用没问题,但觉得这样繁复了点,可以精简吗?为什么前面是private(比较安全?),后面是 public ?
用.Add(new Person())添加后,要修改值怎么办?
class Person
{
private string _a1;
private string _a2;
public Person(string a1, string a2)
{
this._a1 = a1;
this._a2 = a2;
}
public string a1
{
get { return _a1; }
}
public string a2
{
get { return _a2; }
}
}
用.Add(new Person())添加后,要修改值怎么办?
class Person
{
private string _a1;
private string _a2;
public Person(string a1, string a2)
{
this._a1 = a1;
this._a2 = a2;
}
public string a1
{
get { return _a1; }
}
public string a2
{
get { return _a2; }
}
}
这个只在vs2008或者以上版本才可以
class Person
{
public Person(string stra1, string stra2)
{
this.a1 = stra1;
this.a2 = stra2;
} public string a1 { get; set; } public string a2 { get; set; }
}
前面的是类变量 不需要全局访问 后边的是类属性 所以要public 和安全性没有关系添加set可以修改其值
所以private是很重要的
放到集合里还可以遍历来访问,也可以通过索引访问啊。集合a.Add(new Person())集合a[0].a1
集合a[0].a2这样都可以
a.Add(new Person(...))没问题,成功加入
a[0].a1="louzhu",会出现
错误 1 无法对属性或索引器“Person.a1”赋值 -- 它是只读的是不是我属性定义有问题
set 写
出现这个错误的原因是因为你的属性是只读的,你加个set就可以写了,可以改变其值
class Person
{
private string _a1;
private string _a2;
public Person(string a1, string a2)
{
this._a1 = a1;
this._a2 = a2;
}
public string a1
{
get { return _a1; }
set{_a1=value;}
}
public string a2
{
get { return _a2; }
set{_a2=value;}
}
}