Exemplo n.º 1
0
        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}");
            }
        }
Exemplo n.º 2
0
        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}个元素");
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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}");
            }
        }
Exemplo n.º 5
0
        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()方法
                                       );
        }
Exemplo n.º 6
0
 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?
 }
Exemplo n.º 7
0
        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"); });
        }
Exemplo n.º 8
0
 static void Main(string[] args)
 {
     Demo1.Run();
     Demo2.Run();
     Demo3.Run();
     Demo4.Run();
     Demo5.Run();
 }
Exemplo n.º 9
0
            public Demo1 DeepCopy()
            {
                Demo1 newDemo1 = new Demo1();

                newDemo1.aa = this.aa;
                newDemo1.bb = this.bb;

                return(newDemo1);
            }
Exemplo n.º 10
0
        public IActionResult LayDanhMuc()
        {
            var danhMuc = new Demo1
            {
                TenDanhMuc = "Điện Thoại",
                SanPham    = new string[] { "Iphone", "SamSung", "LG" }
            };

            return(PartialView("_DanhMucdemo1", danhMuc));
        }
Exemplo n.º 11
0
        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
            });
        }
Exemplo n.º 12
0
        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}个元素");
        }
Exemplo n.º 13
0
        /// <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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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");
            });
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
            }
        }
Exemplo n.º 19
0
 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;
 }
Exemplo n.º 20
0
        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();
 }
Exemplo n.º 22
0
 public void ChangeValue(Demo1 @object)
 {
     @object       = new Demo1(); // umgebogen
     @object.Value = 2;
 }
Exemplo n.º 23
0
        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');
        }
Exemplo n.º 25
0
 private void Demo1_Click(object sender, RoutedEventArgs e)
 {
     Demo1.Show();
 }
Exemplo n.º 26
0
        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);
        }
Exemplo n.º 27
0
 public void aendereWert(Demo1 obj)
 {
     obj.wert = 4711;
 }
Exemplo n.º 28
0
 public void Setup()
 {
     _demo = new Demo1();
 }