static void Main(string[] args) { { // 얕은 복사 Demo1 demo1 = new Demo1(); demo1.aa = 100; demo1.bb = 1000; Demo1 demo11 = demo1; demo11.bb = 1111; Console.WriteLine($"{demo1.aa}, {demo1.bb}"); Console.WriteLine($"{demo11.aa}, {demo11.bb}"); // 생각한 바와 다르게 demo1.bb 역시 1111 출력됨 // value타입과 reference타입이 있음. // value는 stack, ref는 heap 메모리 영역에 데이터를 저장 // 클래스도 ref 형식을 취하고 있음. // 따라서 stack에 demo1, demo11 변수가 있고, heap에 aa bb 위치를 가리키고 있기 때문에 // 복사 시에 bb 값을 바꿔버렸기 때문에 demo1역시 바뀐 값이 출력 // 요것이 얕은 복사! } // 깊은 복사 { Demo1 demo1 = new Demo1(); // 원래 위에서 변수 사용해서 안되지만 빈 블럭하면 로컬변수처럼 사용해서 또 쓸 수가 있음! demo1.aa = 100; demo1.bb = 1000; Demo1 demo11 = demo1.DeepCopy(); demo11.bb = 1111; Console.WriteLine($"{demo1.aa}, {demo1.bb}"); Console.WriteLine($"{demo11.aa}, {demo11.bb}"); } }
public override void Init() { Log.Print($"[ConvertDemo] 本Demo用于示例多继承并至少有一个相同继承的类型如何存入数组"); List <IDemo> list = new List <IDemo>(0); Log.Print($"[ConvertDemo] 创建了IDemo列表list"); var go = new UnityEngine.GameObject("demo1"); go.transform.SetParent(UnityEngine.GameObject.Find("ConvertDemo").transform); Demo1 d1 = go.CreateJBehaviour <Demo1>(); Log.Print($"[ConvertDemo] 创建了一个{d1.GetType().FullName}对象d1," + $"继承了JBehaviour和IDemo,挂载在ConvertDemo/demo1下"); Demo2 d2 = new Demo2(); Log.Print($"[ConvertDemo] 创建了一个{d2.GetType().FullName}对象d2," + $"继承了OtherClass和IDemo"); list.Add(d1); list.Add(d2); Log.Print($"[ConvertDemo] list 添加了d1和d2"); Log.Print($"[ConvertDemo] list 有{list.Count}个元素"); }
static void Main(string[] args) { int zahl = 3; int zahl1; // macheIrgendwas(zahl); // hier wird die Zahl (3) übergeben - Call-by-Value macheIrgendwas(ref zahl, out zahl1); // hier wird die Referenz (500) übergeben - Call-by-Reference WriteLine("Zahl = " + zahl); WriteLine("Zahl1 = " + zahl1); ReadLine(); Demo1 obj = new Demo1(); Demo2 obj2 = new Demo2(); obj2.aendereWert(obj); WriteLine(obj.wert); ReadLine(); // unsafe geht nur, wenn man oben in der Projektmappe aufrauf -> rechtsklick -> einstellungen -> build -> unsicher zulassen unsafe { int *p = &zahl; WriteLine("p = {0:X}", *p); WriteLine((int)p); // der speicherpunkt } ReadLine(); }
static void Main(string[] args) { { //얕은 복사 Demo1 demo1 = new Demo1(); demo1.aa = 100; demo1.bb = 1000; Demo1 demo11 = demo1; //복사 demo11.bb = 1111; Console.WriteLine("------------------- 얕은복사 --------------------------"); Console.WriteLine($"{demo1.aa} {demo1.bb}"); Console.WriteLine($"{demo11.aa} {demo11.bb}"); } //깊은복사 { Demo1 demo1 = new Demo1(); demo1.aa = 100; demo1.bb = 1000; Demo1 demo11 = demo1.DeepCopy(); demo11.bb = 1111; Console.WriteLine("------------------- 깊은복사 --------------------------"); Console.WriteLine($"{demo1.aa} {demo1.bb}"); Console.WriteLine($"{demo11.aa} {demo11.bb}"); } }
private void OpenMyLayerWinCommandClick() { var dd = new Demo1(); dd.Width = 500; dd.Height = 300; var vm = new Demo1ViewModel(); //设置20秒后关闭弹出窗体 MyTime.SetTimeout(10000, () => { ClosePopup.Request(); }); MyLayerServices.ShowDialog("Demo1", dd, vm, OnDialogCloseCallBack, new MyLayerOptions() { MaskBrush = SolidColorBrushConverter.From16JinZhi("#4F000000"), CanDrag = IsCandrag, HasShadow = HasShadow, AnimationType = SelectedAnimationType.Key }, delegate//窗体呈现完毕后执行的委托方法 { vm.Load(); }, ClosePopup//后台要关闭弹出窗口,只需要执行此InteractionRequest的Request()方法 ); }
public void ChangeValue(Demo1 @object) { // (commenting out the following line will result 4711...) //@object = new Demo1(); // Output will be 500 todo: understand why..! // both together commented or uncommented have the same result (500 & 4711)! //@object.Value = 4711; // Q: if uncommented this has no (visible) changes for the Output! Why? }
static async void CreacionTareas() //Método en asíncrono para no bloaquear el hilo principal de la aplicación. { //DELEGADOS: //Crear variables del tipo delegado: Demo1 demo = Saludo; //Tipo Demo1 -> Almacena un método que no devuelve nada y que no tiene parámetros. Demo2 demo2 = Saludo2; //Tipo Demo2 -> Almacena un método que no devuelve nada y tiene un parámetro. //Al cambiar el contenido de la variable podemos implementar diferentes métodos: demo = Saludo3; //Una variable de tipo delegado funciona como un método, podemos invocarlo: //demo(); //TAREAS: //1. Instanciar tareas (método de instancia): Task tarea1 = new Task(new Action(Saludo)); //Utilizando Action: Objeto global de tipo delegado. Contiene código -> Saludo (Método) TaskStatus estado = tarea1.Status; //Guardar el estado de la tarea. Task tarea2 = new Task(delegate { //Utilizando un delegado: Tipo de dato que contiene código. Console.WriteLine("Tarea 2 ejecutandose"); }); Task tarea3 = new Task(new Action(demo)); //Demo -> Método almacenado en una variable de tipo delegado. Task <bool> tarea4 = new Task <bool>(delegate { //Cuando las tareas retornan algo, tenemos que especificar el tipo de lo que retornan. Console.WriteLine("Tarea 4 ejecutandose"); Thread.Sleep(3000); //Para que espere 2 segundos. Console.WriteLine("Tarea 4 finalizada"); return(true); }); Task tarea5 = new Task(() => { //Utilizando un método anónimo con una expresión lambda. Console.WriteLine("Tarea 5 ejecutandose"); }); //2. Ponerlas en funcionamiento: tarea1.Start(); tarea2.Start(); tarea3.Start(); tarea3.Wait(3000); //Esperar un máximo de 3000 milisegundos = 3 segundo (limitación) antes de pasar a la siguiente. tarea4.Start(); //Antes del wait tenemos que iniciar la tarea. tarea4.Wait(2000); //Si no ha finalizado la tarea en 2 segundo ejecuta la siguiente. //Pintar el resultado de lo que retorna la tarea: //Console.WriteLine("Resultado de la tarea 4: {0}", tarea4.Result); //NO HARIA FALTA EL WAIT, bloquea el HILO PRINCIPAL. Console.WriteLine("Resultado de la tarea 4: {0}", await tarea4); //Únicamente en métodos asíncronos -> Desvincula del HILO PRINCIPAL. tarea5.Start(); //1./2. Crear una tarea y a la vez ponerla en funcionamiento (método estático, sin instanciar): Task tarea6 = Task.Run(() => { Console.WriteLine("Tarea 6 ejecutandose"); }); //Iniciar diferentes tareas en PARALELO: Parallel.Invoke( () => tarea1.Start(), () => tarea2.Start(), () => tarea3.Start(), () => { Console.WriteLine("Tarea en paralelo"); }); }
static void Main(string[] args) { Demo1.Run(); Demo2.Run(); Demo3.Run(); Demo4.Run(); Demo5.Run(); }
public Demo1 DeepCopy() { Demo1 newDemo1 = new Demo1(); newDemo1.aa = this.aa; newDemo1.bb = this.bb; return(newDemo1); }
public IActionResult LayDanhMuc() { var danhMuc = new Demo1 { TenDanhMuc = "Điện Thoại", SanPham = new string[] { "Iphone", "SamSung", "LG" } }; return(PartialView("_DanhMucdemo1", danhMuc)); }
private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { var dd = new Demo1(); //dd.Width = 800; //dd.Height = 640; Console.WriteLine("开始触发"); //var vm = new MyLayerDemo1ViewModel(); //MyLayerServices.ShowDialog("这是MyLayerDemo1", dd, vm, onDialogCloseCallBack, null,vm.SetMessage); MyWPFUI.Controls.MyLayer.ShowDialog(null, dd, "弹窗DEMO1", new MyLayerOptions() { MaskBrush = SolidColorBrushConverter.From16JinZhi("#4F000000"), CanDrag = true, HasShadow = true, AnimationType = AnimationType.InFormDown }); }
public override void Init() { List <IDemo> list = new List <IDemo>(0); var go = new UnityEngine.GameObject("demo1"); go.transform.SetParent(UnityEngine.GameObject.Find("ConvertDemo").transform); Demo1 d1 = go.CreateJBehaviour <Demo1>(); Demo2 d2 = new Demo2(); list.Add(d1); list.Add(d2); Log.Print($"[ConvertDemo] list 有{list.Count}个元素"); }
/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { Demo1 d = new Demo1(); //d.Run(); Demo2 d2 = new Demo2(); d2.Run(); EventPublisher p = new EventPublisher(); EventSubscriber1 s1 = new EventSubscriber1(); EventSubscriber2 s2 = new EventSubscriber2(); p.Added += s1.AddedEventHandler; p.Added += s2.AddedEventHandler; p.Add(50); }
private void ButtonBase2_OnClick(object sender, RoutedEventArgs e) { var dd = new Demo1(); dd.Width = 800; dd.Height = 640; //MyLayer.ShowDialog(null, dd, "弹窗DEMO1"); //var vm = new MyLayerDemo1ViewModel(); MyLayerServices.ShowDialog("这是MyLayerDemo2", dd, this, onDialogCloseCallBack, new MyLayerOptions() { MaskBrush = SolidColorBrushConverter.From16JinZhi("#4F000000"), CanDrag = true, HasShadow = true, AnimationType = AnimationType.InFormDown }, delegate { MessageBox.Show("渲染数据"); }, CloseRequest); }
static void CreacionTareas() { Demo1 demo = Saludo; Task tarea1 = new Task(new Action(Saludo)); Task tarea2 = new Task(delegate { Console.WriteLine("Tarea 2 ejecutandose"); }); Task tarea3 = new Task(() => { Console.WriteLine("Tarea 3 ejecutandose"); }); Task tarea4 = new Task(new Action(demo)); Task tarea5 = Task.Run(() => { Console.WriteLine("Tarea 5 ejecutandose"); }); }
public void TestOnBasePropertiesInterface() { TransformerObserver observer = new TransformerObserver(); observer.BuildAutoResolverMapper <IClassC, Demo2>(null, null); Demo1 demo = new Demo1 { MyAProp = "myprop1", MyBProp = "myprop2", MyBBProp = "myprop3", MyCProp = "myprop4" }; var res = observer.TryToMap <IClassC, Demo2>(demo); Assert.AreEqual(demo.MyAProp, res.MyAProp); Assert.AreEqual(demo.MyBProp, res.MyBProp); Assert.AreEqual(demo.MyBBProp, res.MyBBProp); Assert.AreEqual(demo.MyCProp, res.MyCProp); }
public void TestA() { Type t2 = typeof(IClassB); Type t3 = typeof(IClassBB); var t2Prop = t2.GetProperty("MyBProp"); var t3Prop = t3.GetProperty("MyBProp"); var demo = new Demo1(); demo.MyBProp = "ciao"; var val1 = t2Prop.GetValue(demo, null); var val2 = t3Prop.GetValue(demo, null); Assert.AreNotEqual(t2Prop, t3Prop); Assert.AreEqual(val1, val2); Assert.AreEqual(val1, demo.MyBProp); Assert.AreEqual(val2, demo.MyBProp); }
static void Main(string[] args) { Demo1 demo = new Demo1( new List <User> { new User { Role = "Admin" }, new User { Role = "Paid" }, new User { Role = "Free" } } ); // The foreach-loop calls the generic GetEnumerator method. // ... It then uses the List's Enumerator. foreach (User element in demo) { Console.WriteLine(element.Role); } }
public void ChangeValue(ref Demo1 @object) { // (commenting out the following line will result 4711...) //@object = new Demo1(); // commented out has no (visible) changes// todo: understand why..! @object.Value = 4711; }
public void TestOnBasePropertiesInterface() { TransformerObserver observer = new TransformerObserver(); observer.BuildAutoResolverMapper<IClassC, Demo2>(null, null); Demo1 demo = new Demo1 { MyAProp = "myprop1", MyBProp = "myprop2", MyBBProp = "myprop3", MyCProp = "myprop4" }; var res = observer.TryToMap<IClassC, Demo2>(demo); Assert.AreEqual(demo.MyAProp, res.MyAProp); Assert.AreEqual(demo.MyBProp, res.MyBProp); Assert.AreEqual(demo.MyBBProp, res.MyBBProp); Assert.AreEqual(demo.MyCProp, res.MyCProp); }
static void Main(string[] args) { var d = new Demo1(); d.Start(); }
public void ChangeValue(Demo1 @object) { @object = new Demo1(); // umgebogen @object.Value = 2; }
static void Main(string[] args) { Console.WriteLine("// Beispiel: ..\\Kapitel 3\\Wertuebergabe"); Console.WriteLine(""); // casual call by value DoSomething(value); DoSomething(refString); Console.WriteLine($"call by value = {value}"); Console.WriteLine($"call by value = {refString}"); // call by reference Operation DoSomething(ref value); DoSomething(ref refString); Console.WriteLine($"call by reference = {value}"); Console.WriteLine($"call by reference = {refString}"); DoSomethingO(out value); DoSomethingO(out refString); Console.WriteLine($"called \"out\" = {value}"); Console.WriteLine($"called \"out\" = {refString}"); Console.WriteLine(""); Console.WriteLine("// Beispiel: ..\\Kapitel 3\\UebergabeEinerReferenz"); Console.WriteLine(""); Demo1 object1 = new Demo1(); Demo2 object2 = new Demo2(); object2.ChangeValue(object1); Console.WriteLine("object2.ChangeValue( object1) call:"); Console.Write(object1.Value); Console.WriteLine(" = object1.Value"); Console.WriteLine(object1); Console.WriteLine(""); Console.WriteLine("TEST no .value for object"); Console.WriteLine(""); //Console.WriteLine("object2"); Console.WriteLine(object2); Console.WriteLine(""); Console.WriteLine("object2.ChangeValue(ref object1) call:"); object2.ChangeValue(ref object1); Console.Write(object1.Value); Console.WriteLine(" = object1.Value"); Console.WriteLine(""); Console.WriteLine("Assigning an object to a parameter means that the " + "reference to the object\nis passed as an argument, " + "not just any value."); Console.WriteLine(""); Console.WriteLine("TEST no~2a new obj3&4 as above, call of object4.ChangeValue(object3)"); Demo1 object3 = new Demo1(); Demo2 object4 = new Demo2(); object4.ChangeValue(object3); Console.WriteLine(object3.Value); Console.WriteLine("= object3.Value"); Console.WriteLine(""); Console.WriteLine("TEST no~2b same objects agian call of object4.ChangeValue(ref object3) agian!"); object4.ChangeValue(ref object3); Console.WriteLine(object1.Value); Console.WriteLine("= object.1.Value"); // When objects like (object1 & object3) are created from Class Demo1 they "inherit"? the Value = 500. // The objects (object2 & object4)are created from Class Demo2 they will get assigned the Value of the Demo2 // class [by calling the ChangeValue Method with (ref Demo1 @object) they receive the object Value of 4711...] Console.ReadLine(); }
static void Main() { Demo1 d1 = new Demo1(); char a; SqlConnection con = null; SqlCommand cmd = null; SqlDataReader dr = null; do { Console.WriteLine("Choose Your Operation:"); Console.WriteLine("1.Insertion Operation"); Console.WriteLine("2.Update Operation"); Console.WriteLine("3.Delete Operation"); int ch = Convert.ToInt32(Console.ReadLine()); switch (ch) { case 1: try { // Console.WriteLine("Enter an existing Employee Id"); // var eid = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter Employee Name"); var ename = Console.ReadLine(); Console.WriteLine("Enter Employee Salary"); var esal = Convert.ToSingle(Console.ReadLine()); Console.WriteLine("Enter Dept Id"); var depno = Convert.ToInt32(Console.ReadLine()); con = new SqlConnection(@"Data Source=DELL\SQLEXPRESS;Initial Catalog=WFA3DotNet;Integrated Security=True"); cmd = new SqlCommand("sp_Insert", con); cmd.CommandType = CommandType.StoredProcedure; // cmd = new SqlCommand("insert into adoemp values(@ename,@esal,@depno)", con); // cmd.Parameters.Add("@eid", SqlDbType.Int).Value = eid; cmd.Parameters.Add("@ename", SqlDbType.VarChar, 20).Value = ename; cmd.Parameters.Add("@esal", SqlDbType.Float).Value = esal; cmd.Parameters.Add("@depno", SqlDbType.Int).Value = depno; con.Open(); int i = cmd.ExecuteNonQuery(); d1.ShowData(); } catch (Exception ex) { Console.WriteLine($"{ex.Message}"); } finally { con.Close(); } break; case 2: try { Console.WriteLine("Enter an existing Employee Id"); var eid = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter Employee Name"); var ename = Console.ReadLine(); Console.WriteLine("Enter Employee Salary"); var esal = Convert.ToSingle(Console.ReadLine()); Console.WriteLine("Enter Dept Id"); var depno = Convert.ToInt32(Console.ReadLine()); con = new SqlConnection(@"Data Source=DELL\SQLEXPRESS;Initial Catalog=WFA3DotNet;Integrated Security=True"); cmd = new SqlCommand("sp_UpdateEmp", con); cmd.CommandType = CommandType.StoredProcedure; // cmd = new SqlCommand("insert into adoemp values(@ename,@esal,@depno)", con); cmd.Parameters.Add("@eid", SqlDbType.Int).Value = eid; cmd.Parameters.Add("@ename", SqlDbType.VarChar, 20).Value = ename; cmd.Parameters.Add("@esal", SqlDbType.Float).Value = esal; cmd.Parameters.Add("@depno", SqlDbType.Int).Value = depno; con.Open(); int i = cmd.ExecuteNonQuery(); d1.ShowData(); } catch (Exception e) { Console.WriteLine(e.Message); } finally { con.Close(); } break; case 3: try { Console.WriteLine("Enter employee Id"); var eid = Convert.ToInt32(Console.ReadLine()); con = new SqlConnection(@"Data Source=DELL\SQLEXPRESS;Initial Catalog=WFA3DotNet;Integrated Security=True"); cmd = new SqlCommand("sp_DeleteEmp", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@eid", SqlDbType.Int).Value = eid; con.Open(); int i = cmd.ExecuteNonQuery(); Console.WriteLine("one row deleted to the table"); d1.ShowData(); } catch (Exception e) { Console.WriteLine(e.Message); } finally { con.Close(); } break; default: Console.WriteLine("wrong choice"); break; } Console.WriteLine("Do U want to continue(y/n)?"); a = Convert.ToChar(Console.ReadLine()); } while (a == 'y'); }
private void Demo1_Click(object sender, RoutedEventArgs e) { Demo1.Show(); }
public void aendereWert(Demo1 obj) { obj.wert = 4711; }
public void Setup() { _demo = new Demo1(); }