? tells the compiler that field can be null, which in turn lets your IDE know it should be telling you to add null checks to your code.Arena are static which isn't good.? when accessing your trainer fields, but it is a way to access properties and not cause exceptions if something is null.., indexers - [, ], ^ and .., and invocation - (, ).
Arena[]^..(Trainer t1 = null;
t1.SomeMethod() // this causes an exceptionTrainer t1 = null;
var someValue = t1?.SomeMethod() // this does NOT cause an exception, BUT if it would have returned a value, say a string, someValue would now be null