我在这里做错了什么,或者从C#7.2开始,不支持ref和allow set返回的索引器?
使用:
public ref byte this[int index] {
get {
return ref bytes[index];
}
}
也适用:
public byte this[int index] {
get {
return bytes[index];
}
set {
bytes[index] = value;
}
}
失败:
public ref byte this[int index] {
get {
return ref bytes[index];
}
set { //<-- CS8147 Properties which return by reference cannot have set accessors
bytes[index] = value;
}
}
也会失败:
public ref byte this[int index] {
get {
return ref bytes[index];
}
}
public byte this[int index] { //<-- CS0111 Type already defines a member called 'this' with the same parameter types
set {
bytes[index] = value;
}
}
那么,有没有办法获得ref ref还允许索引器也支持Set?
答案 0 :(得分:0)
正如@IvanStoev正确指出的那样,不需要set,因为该值是通过引用返回的。因此,索引器的调用者可以完全控制返回的值,因此可以为其分配一个新值,更改将反映在基础数据结构(其索引器被调用)中,因为该值是通过引用而不是通过引用返回的值。