User Control's Viewstate
<p>In some book I've seen that they save custom properties of user control like this:</p>

<pre><code> private int id = 0;
   public int ID
   {
      get { return id; }
      set { id = value; }
   }

   protected void Page_Init(object sender, EventArgs e)
   {
      this.Page.RegisterRequiresControlState(this);
   }

   protected override void LoadControlState(object savedState)
   {
      object[] ctlState = (object[])savedState;
      base.LoadControlState(ctlState[0]);
      this.ID = (int)ctlState[1];
   }

   protected override object SaveControlState()
   {
      object[] ctlState = new object[2];
      ctlState[0] = base.SaveControlState();
      ctlState[1] = this.ID;
      return ctlState;
   }
</code></pre>

<p>My question is why can I simply store it (in setter) in viewstate like: Vistate["ID"]=id;<br />
and then retrieve it form there?</p>
