public static void UserDataStorageGetOrSet() { string ToStr(int value) => value.ToString(); var obj = new object(); var slot = UserDataSlot <string> .Allocate(); Equal("42", obj.GetUserData().GetOrSet(slot, 42, ToStr)); }
public static void UserDataStorageGetOrSetSimpleFactory() { string CreateString() => "Hello, world!"; var obj = new object(); var slot = UserDataSlot <string> .Allocate(); Equal("Hello, world!", obj.GetUserData().GetOrSet(slot, CreateString)); }
public static void UserDataStorage() { var slot = UserDataSlot <long> .Allocate(); var str = new string('a', 3); str.GetUserData().Set(slot, 42); Equal(42, str.GetUserData().Get(slot)); str = null; GC.Collect(); GC.WaitForFullGCComplete(); str = new string('a', 3); Equal(0, str.GetUserData().Get(slot)); }