C、C++ユーザーで始めてC#やるんだけど。変数の寿命についておしえてちょ。
private void Form1_Load(.....省略)
{
  DataTable data = new DataTable();
  data.Columns.Add("商品",typeof(string));
  data.Columns.Add("値段",typeof(int));
  cmb商品選択.DataSource = data;    //←cmb商品選択=コンボボックスコントロール
  cmb商品選択.DisplayMember = "商品";
  cmb商品選択.ValueMember = "値段";
}
↑このようにForm1_Loadで処理をした後、同じFormクラス内で
private void CommandButton1_Click(.........省略)
{
  int 値段 = cmb商品選択.SelectedValue as int;
}
↑これで、選択された商品の値段を取得することができます。

質問
Form1_Load()内で、作成したDataTable dataは、ロードされている間はずっと生きてるんですか??それともデータがコピーされているのですか?
例えば、
private void Form1_Load(....省略){  int a = 1;  }
と
private void CommandButton1_Click(.....省略){  int a = 2;  }
があったとして、
それぞれのint aは、それぞれの関数の処理が終わったら、そこで解放されて値は保証されないのがC言語だったのですが....。
C#の場合は、cmb商品選択はメンバ変数として領域が確保されていますが、DataTable dataはメンバ関数内のローカル変数です。
なのに、データが保証されているのは、cmb商品選択.DataSource = data; で丸々コピーをしているのですか?