I understand. Some additional information.
aReg0 is an object that has the same pointer as aRegistros.Get(0)
Since aReg0.Set(2,cFec) already achieves what you want, do you don't need aRegistros.Set(0,aReg0)
Although it does no harm. I sometimes do it just for clarity. You DO need it for primitive values (Int, Long, Float, String, Boolean, Byte) but not for Arrays or lists or Maps.
You also have to be careful that if you have an object rather than a primitive, you need to clone that object to avoid confusing results.
For EXAMPLE if you had a hypothetical situation where cFec was an object rather than a string...
Dim cFec() As String = Array As String("EST", "2021-08-25", "yyyy-MM-dd")
Then aReg0.Set(2,cFec) would put a pointer to that object in the record's 3rd position, but you probably would want a clone of cFec
A clone would be:
Array As String(cFec(0), cFec(1), cFec(2))
If you don't use a clone in this hypothetical situation, then any changes to aReg1.Get(2) would also occur in aReg0.Get(2) since they would point to the same thing.