First i must say that this is plyForum so asking here for a help outside a plygame is not too much helpful i think. U would have more luck on some C# programing based sites.
Personaly i go more with hash and Dicts. But of course that you can create List.(Along with ur serialization system(JSON is best for me))
You need ofc one other button manager class which will have public static int counter;
when u have static int all other button classes will change taht same value OnClick(); you just need to subscribe events for each one separatly amd derive them from your ButtonManager class whaich will change this.counter.
u can use even like this ListOFChars[mybutonclas.counter] or you can jsut fetch reference of ur list and do it taht way.
to get taht data beside your :
public string name; etc
u need as well
public List chars;
serialize your CharacterArrayClass and use CharacterClass for retrieval of data.
I am not sure are you looking for idea or actual way how to do it tho, so i dont know how helpfull this will be to you…