Bom dia pessoal.
Estou com dúvida em relação a um certo comportamento do C#, sou iniciante então pode ser que seja algo bobo, mas vamos lá.
Vou dar essa parte do código onde utilizo um datatable como exemplo, porem o mesmo poderia ser com uma List<> ou outro tipo de variável.
A questão é a seguinte.
Tenho em um WindowsForm um botão que chama uma outra tela, passando como parâmetro um DataTable, que no caso aqui tem o nome de datatableprincipal.
private void BtGerar_Click(object sender, EventArgs e)
{
var frv = new fmRltGenerico(datatableprincipal);
frv.Show(this);
}
O WindowsForm chamado recebe o DataTable e usa ele como parâmetro para setar o valor de um outro DataTable chamado _dados.
private DataTable _dados = new DataTable();
public fmRltGenerico(DataTable dados)
{
InitializeComponent();
_dados = dados;
}
A questão é, cada DataTable está em um WindowsForm, porem se eu edito, altero qualquer parte do _dados, o datatableprincipal também é alterado.
Eu sei que é por eu ter feito _dados = dados;
Mas eu confesso que não entendo muito bem o por que acontece isso. O que eu queria na verdade é que o _dados apenas “copiasse” o DataTable recebido no caso.
Não sei se consegui ser claro em relação a minha dúvida, mas se alguém conseguir me esclarecer um pouco, eu serei muito grato.
Vlw galera