static void Main(string[] args) { var all = db.DemoAs.All(); Console.WriteLine("Enter DemoA Name: "); string result = Console.ReadLine(); DemoA o1 = new DemoA { Name = result, Code = "a1new", DateCreated = DateTime.Now, DemoB = new Guid("61188c91-0a4a-4235-b08f-79f70bc0cf6e"), Description = "a1new", }; db.DemoAs.Insert(o1); o1.Code = "a1new upadate"; o1.Update(); var all1 = db.DemoAs.All(); var cc = o1; var tt = db.DemoAs.Single(o1.Oid); Console.WriteLine(tt.ToString()); result = Console.ReadLine(); //db.DemoAs.Delete(o1); var all11 = db.DemoAs.All(); DemoB b = new DemoB { Code = "ASD", Name = "BBB1", Price = 123123 }; db.DemoBs.Insert(b); var bs = db.DemoBs.All(); var findb = db.DemoBs.Single(new Guid("61188c91-0a4a-4235-b08f-79f70bc0cf6e")); b.Delete(); bs = db.DemoBs.All(); //db.DemoBs.Delete(b); var sdfsd = 1; }
static void Main(string[] args) { //Instanciamos un objeto de la clase DemoB. var demo = new DemoB(); demo.Nombre = "Aitor"; demo.Apellidos = "Cerdán"; demo.Edad = 13; //demo.PintaDatos(); demo.PintaDatosHijo(); demo.PintaDatosPadre(); //Compatibilidad: La compatibilidad es con la BASE. Los derivados entre si son incompatibles. DemoB b = new DemoB(); DemoA a = new DemoA(); //Las variables tienen que contener objetos iguales. DemoA a2 = new DemoB(); //Las clases base son compatibles con las clases derivadas. //DemoB b2 = new DemoA(); //Clase derivada contiene clase base. NO //DemoC c = new DemoA(); //Clases no heredadas. NO //Sucede igual con el uso de interfaces: Lavadora lavadora = new Lavadora(); IElectrodomestico Ilavadora = new Lavadora(); //Una variable de una interfaz puede contener cualquier objeto de sus clases derivadas. Nevera nevera = new Nevera(); //Estos objetos tienen acceso a toda la funcionalidad de la clase Nevera. IElectrodomestico Inevera = new Nevera(); //Estos objetos solo tendran acceso a los miembros mínimos que define la interfaz. Ilavadora = lavadora; Ilavadora = nevera; //Una variale de tipo interfaz puede contener cualquier objeto que derive de su misma interfaz. Ilavadora = Inevera; //Inevera es un objeto interfaz. Inevera = lavadora; //etc. Inevera e Ilavadora son la misma interfaz. //Tipos: Console.WriteLine(lavadora.GetType().ToString()); //Objeto. Console.WriteLine(Ilavadora.GetType().ToString()); //Interfaz. A través de una conversión podemos acceder a los métodos del objeto. //Colecciones: IEnumerable <int> numeros = new List <int>(); //Interfaz IEnumerable que comparten todas las colecciones en .NET. Solo tenemos acceso a la funcionalidad mínima. }
/// <summary> /// 示範 /// </summary> public void Run() { #region 多載 ///多載:使用同一個方法名稱,但參數可以不同,即可呼叫其他的多載方法 ///可以搭配optional parameter 減少撰寫多餘的多載方法 ///請看GetName(int id, string name, string mobile = "") 的 mobile ///https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments this.GetName(1); this.GetName(1, "Bryan"); this.GetName(1, "Bryan"); /// 第三個參數可丟可不丟 #endregion 多載 #region 泛型 ///泛型可以指定不同的型別,具有型別安全等優點,可以讓你有彈性的運用 ///https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/generics/ ///下面List<T> 的 <T> ,T 指的是泛型的型別 (可以是你自己建的類別或是其他型別) ///一旦指定泛型型別後,就可以強制使用該型別,就像testAList一定不能加入TestB的類別 List <TestA> testAList = new List <TestA>(); List <TestB> testBList = new List <TestB>(); //testAList.Add(new TestB()); ->Error #endregion 泛型 #region 條件式編譯 ///條件式編譯可以讓你在程式編譯時選擇你要的區塊 ///例如我們現在是Debug組態,下面的Debug是沒有反灰的,但RELEASE是反灰的 ///所以當我們使用Debug輸出,裡面的dll只會包含沒有反灰的區塊 /// #if DEBUG Console.WriteLine("Debug"); #endif #if RELEASE Console.WriteLine("Release"); #endif #endregion 條件式編譯 #region 部分類別(Partial Class) ///Partial Class 可以讓你在不同的檔案中編輯同一個類別 ///編譯器在編譯時會將這些檔案合併成同一個類別 ///要注意的是Partial Class 必須都存在同一個命名空間下(namespace) var demoA = new DemoA(); //DemoA.cs裡面的方法 demoA.MethodA(); //Partial.DemoA.cs裡面的方法 demoA.MethodB(); #endregion 部分類別(Partial Class) #region 擴充方法(Extension) ///擴充方法可以讓你自己開發對於該型別的一些方法 ///在這個例子中,我們對Enum型別開發了一個取得Description的Name的方法 ///要注意的是擴充方法必須為static 方法參數第一個要為要擴充的型別 ///(參考EnumExtension寫法) DemoEnum.One.GetDescription(); // 擴充方法(在EnumExtension.cs) int i = 0; i = i.GetNextNumber(); // 擴充方法(在IntergerExtension.cs) int j = 5; j = j.GetMutiple(10); #endregion 擴充方法(Extension) }