Как и @Maximiliangerhardt, MiniJson не имеет возможности десериализоваться должным образом. Я использовал JsonFx и работал как шарм. Работает с []
player[] p = JsonReader.Deserialize<player[]>(serviceData);
Debug.Log(p[0].playerId +" "+ p[0].playerLoc+"--"+ p[1].playerId + " " + p[1].playerLoc+"--"+ p[2].playerId + " " + p[2].playerLoc);
day
которого стал -1, больше не используется, поскольку его инварианты говорят, что day
находится в диапазоне [1, 31]. В вашем случае нет гарантии исключения. (Это в основном случай 0). Статья в Википедии, которую вы цитируете, понятна: «Правила применяются к реализациям классов». Кроме того, после того, как вы выбрали, переменная j
выходит за пределы области действия и больше не существует. Вы даже не можете больше говорить о своем адресе, не говоря уже о значении
. Обычно инварианты класса определяются автором класса, поэтому он означает все, что имеет в виду автор класса. Я не понимаю вашу точку 1. NULL
является допустимым значением для указателя.
Ваша вторая точка хорошая. Определение не является абсолютным. Например, операция над строковым элементом данных может увеличить его емкость. Вы можете наблюдать это снаружи через const&
. Тем не менее, эта пропускная способность обычно не рассматривается как часть значения строки и, следовательно, не является частью инварианта класса.