110,534
社区成员
发帖
与我相关
我的任务
分享
var d = stuList[0];
d.age = 10;
stuList[0]=d;
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
相当于方法直接返回了一个数据(由于你student是struct ,所以返回的是数据的拷贝)
另外 你平常可以直接设置属性那些 其实不是把值取出来赋值(只是看起来是这样),实际上是属性实现了set,本质上是调用了数据类型里面的方法改变数据的值。
而你的student没有为age字段定义属性,所以不能赋值(不过由于你student是struct 所以即便修改了实际数据的值也不会改变)
另外楼上很多前辈说操作是无意义的所以被禁止,这点我保留意见。被禁止是因为语法错误,跟操作有没有意义没有关系
提示很清楚了,你没有为这个数据指定一个变量来存储,当然不让你修改/赋值(前面解释了有时候看起来像可以直接修改/赋值的,那其实是属性里的方法完成的)
如果 先定义一个tempVaule变量 来存储数据 ,再改变变量的值,编译器就不会报错了(虽然不能改变数据源的值)