static void Main(string[] args) { int x = 10; int y = 20; y = x; Console.WriteLine(x); Console.WriteLine(y); PosicaoClass posicaoClass = new PosicaoClass(); posicaoClass.x = 10; posicaoClass.y = 20; PosicaoClass posicaoClass2 = new PosicaoClass(); posicaoClass2.x = 30; posicaoClass2.y = 40; posicaoClass2 = posicaoClass; posicaoClass2.x = 50; Console.WriteLine(posicaoClass.x); Console.WriteLine(posicaoClass.y); Console.WriteLine(posicaoClass2.x); Console.WriteLine(posicaoClass2.y); int valor = 10; Dobrar(ref valor); Console.WriteLine(valor); PosicaoClass posicaoClass3 = new PosicaoClass(); posicaoClass3.x = 20; posicaoClass3.y = 30; PosicaoClass posicaoClass4 = new PosicaoClass(); posicaoClass4.x = 40; posicaoClass4.y = 50; Dobrar(posicaoClass3); Dobrar(posicaoClass4); Console.WriteLine(posicaoClass3.x); Console.WriteLine(posicaoClass3.y); Console.WriteLine(posicaoClass4.x); Console.WriteLine(posicaoClass4.y); Console.ReadKey(); }
private static void RefTypeInt() { PosicaoClass pos1 = new PosicaoClass(); pos1.x = 10; pos1.y = 20; PosicaoClass pos2 = new PosicaoClass(); pos2.x = 30; pos2.y = 40; pos2 = pos1; // apontando ambos para a mesma posiçao de memória pos2.x = 50; Console.WriteLine(pos1.x); Console.WriteLine(pos1.y); Console.WriteLine(pos2.x); Console.WriteLine(pos2.y); }
private static void RefTypeInt() { PosicaoClass pos1 = new PosicaoClass(); pos1.X = 10; pos1.Y = 20; PosicaoClass pos2 = new PosicaoClass(); pos2.X = 30; pos2.Y = 40; pos2 = pos1; // apontando ambos para a mesma posição de memória pos2.X = 50; Console.WriteLine(pos1.X); Console.WriteLine(pos1.Y); Console.WriteLine(pos2.X); Console.WriteLine(pos2.Y); }
private static void RefTypeInt() { PosicaoClass pos1 = new PosicaoClass(); //Alocando memoria para um ponteiro pos1.x = 10; // Uma nova instancia. pos1.y = 20; PosicaoClass pos2 = new PosicaoClass(); //Alocando memoria pos2.x = 30; pos2.y = 40; pos2 = pos1; // apontando ambos para a mesma posiçao de memória. pos2.x = 50; Console.WriteLine(pos1.x); Console.WriteLine(pos1.y); Console.WriteLine(pos2.x); Console.WriteLine(pos2.y); }
static void Main(string[] args) { PosicaoClass pos1 = new PosicaoClass(); pos1.x = 10; pos1.y = 20; PosicaoClass pos2 = new PosicaoClass(); pos2.x = 30; pos2.y = 40; Dobrar(pos1); Dobrar(pos2); Console.WriteLine(pos1.x); Console.WriteLine(pos1.y); Console.WriteLine(pos2.x); Console.WriteLine(pos2.y); Console.ReadLine(); }
static void Main(string[] args) { PosicaoClass pos1 = new PosicaoClass(); pos1.X = 10; pos1.Y = 20; PosicaoClass pos2 = new PosicaoClass(); pos2.X = 30; pos2.Y = 40; DobrarRefType(pos1); DobrarRefType(pos2); Console.WriteLine(pos1.X); Console.WriteLine(pos1.Y); Console.WriteLine(pos2.X); Console.WriteLine(pos2.Y); Console.ReadLine(); }
static void Main(string[] args) { PosicaoClass pos1 = new PosicaoClass(); //Alocando memoria para um ponteiro pos1.x = 10; // Uma nova instancia. pos1.y = 20; PosicaoClass pos2 = new PosicaoClass(); //Alocando memoria pos2.x = 30; pos2.y = 40; Dobrar(pos1); Dobrar(pos2); Console.WriteLine(pos1.x); // Não precisa ser passado com ref pois uma Console.WriteLine(pos1.y); // class já é uma referencia Console.WriteLine(pos2.x); Console.WriteLine(pos2.y); Console.ReadLine(); }
}//chama metodo declarado anteriormente de um value type, atraves de uma copia do valor indicado private static void RefTypeInt() { PosicaoClass pos1 = new PosicaoClass();//ponteiro pos1.x = 10; pos1.y = 20; PosicaoClass pos2 = new PosicaoClass();//ponteiro pos2.x = 30; pos2.y = 40; pos2 = pos1; //um ponteiro aponta para a msm posição de outro ponteiro, não gera uma copia como os Value Types pos2.x = 50; //afeta o x de pos 1 pois na linha anterior ambos os ponteiros apontam para o msm espaço de memoria Console.WriteLine(pos1.x); Console.WriteLine(pos1.y); Console.WriteLine(pos2.x); Console.WriteLine(pos2.y); }//metodo exemplo para Reference Type Int
private static void DobrarRef() { PosicaoClass pos1 = new PosicaoClass();//ponteiro pos1.x = 10; pos1.y = 20; PosicaoClass pos2 = new PosicaoClass();//ponteiro pos2.x = 30; pos2.y = 40; Dobrar(pos1); Dobrar(pos2); Console.WriteLine(pos1.x); Console.WriteLine(pos1.y); Console.WriteLine(pos2.x); Console.WriteLine(pos2.y); }//chama metodo declarado anteriormente de um reference type, atraves do valor original declarado na class PosicaoClass
public static void Dobrar(PosicaoClass valor) { valor.x = valor.x * 2; valor.y = valor.y * 2; }
public static void DobrarRefType(PosicaoClass valor)// passando valor como referência { valor.X = valor.X * 2; valor.Y = valor.Y * 2; }
public static void Dobrar(PosicaoClass posicao) { posicao.x = posicao.x * 2; posicao.y = posicao.y * 2; }
public static void Dobrar(PosicaoClass valor)//dobra um Reference Type, no caso um inteiro { valor.x = valor.x * 2; valor.y = valor.y * 2; }