static 필드와 메소드 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System; namespace StaticKeywordEx { class ClassA { public static int valueA; public int valueB; public static void printA() { Console.WriteLine ("static 멤버 변수 valueA : {0}", valueA); } public void printB() { Console.WriteLine ("non-static 멤버 변수 valueB : {0}", valueB); } } class MainClass { public static void Main (string[] args) { ClassA.valueA = 123; ClassA.printA (); // static 멤버 함수 호출 ClassA objA = new ClassA (); objA.valueB = 456; objA.printB (); // non-static 멤버 함수 호출 } } } | cs |
this 생성자 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | using System; namespace CSharp_ThisConstructor { class ClassA { string strA; string strB; string strC; public ClassA() { this.strA = "첫 번째 생성자 값은? 없다"; } public ClassA(int b) : this() { this.strB = "두 번째 생성자 값은? " + b.ToString(); } public ClassA(int b, int c) : this(b) { this.strC = "세 번째 생성자 값은? " + b.ToString() + ", " + c.ToString(); } public void printFields() { Console.WriteLine("*******************", strA, strB, strC); Console.WriteLine("{0}\n{1}\n{2}\n", strA, strB, strC); } } class Program { static void Main(string[] args) { ClassA obj1 = new ClassA(); obj1.printFields(); ClassA obj2 = new ClassA(123); obj2.printFields(); ClassA obj3 = new ClassA(45, 678); obj3.printFields(); obj1 = new ClassA(); Console.ReadKey(); } } } | cs |
base 생성자 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | using System; namespace BaseConstructorEx { class ClassA { protected string name; public ClassA(string name) { this.name = name; Console.WriteLine ("**************"); Console.WriteLine("클래스A의 이름은 {0} 입니다", this.name); } } class ClassB : ClassA { public ClassB(string name) : base(name) { Console.WriteLine("클래스B의 이름은 {0} 입니다.", this.name); Console.WriteLine ("**************"); } } class Program { static void Main(string[] args) { ClassA a = new ClassA("토끼"); ClassB b = new ClassB("거북이"); Console.ReadKey(); } } } | cs |
클래스 형 변환 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | using System; namespace TypeCastingEx { class ClassA { } class ClassB : ClassA { } class MainClass { public static void Main (string[] args) { ClassA objA = new ClassA (); ClassB objB = new ClassB (); ClassA objC = (ClassA)objB; ClassA objD = objB as ClassA; if (objA is ClassB) { Console.WriteLine ("objA == ClassB is true"); } else { Console.WriteLine ("objA == ClassB is false"); } if (objD is ClassA) { Console.WriteLine ("objD == ClassA is true"); } else { Console.WriteLine ("objD == ClassA is false"); } } } } | c |
메소드 오버라이딩 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | using System; namespace MethodOverideEx { class ClassA { protected int valueA; public virtual void printValue() { Console.WriteLine ("Class A 수행 값은 : {0}", this.valueA); } } class ClassB : ClassA { public ClassB(int val) { this.valueA = val; } // 재정의 public override void printValue() { Console.WriteLine ("Class B 수행 값은 : {0}", this.valueA); } } class MainClass { public static void Main (string[] args) { ClassB objB = new ClassB (123); objB.printValue (); // 재정의 한 코드 수행 } } } | cs |
중첩 클래스 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | namespace InnerClassEx { public class ClassA { private int valueA; public class InnerClassA { private ClassA parent; public InnerClassA() { } public InnerClassA(ClassA parent) { this.parent = parent; this.parent.valueA = 10; // privite 멤버도 접근 가능 } public void printA() { Console.WriteLine ("클래스A의 값A는 {0}", this.parent.valueA); } } } class MainClass { public static void Main (string[] args) { ClassA obj = new ClassA (); ClassA.InnerClassA innerObj = new ClassA.InnerClassA(obj); innerObj.printA (); } } } | cs |
분할 클래스 예제
FileA.cs
1 2 3 4 5 6 7 8 9 10 11 | using System; namespace PartialClassEx { partial class ClassFile { int valueA; int valueB; int valueC; } } | cs |
FileB.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 | using System; namespace PartialClassEx { partial class ClassFile { public ClassFile () { valueA = 123; valueB = 456; valueC = 789; } } } | cs |
FileC.cs
1 2 3 4 5 6 7 8 9 10 11 12 | using System; namespace PartialClassEx { partial class ClassFile { public void printValues() { Console.WriteLine(valueA); Console.WriteLine(valueB); Console.WriteLine(valueC); } } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | using System; namespace PartialClassEx { class MainClass { public static void Main (string[] args) { ClassFile cf = new ClassFile (); cf.printValues (); } } } | cs |
클래스 객체의 복사 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | using System; namespace ClassCopyEx { class MainClass { class Enemy { public int level; public int exp; public Enemy() {} public Enemy(int level, int exp) { this.level = level; this.exp = exp; } public Enemy DeepCopy() { Enemy objA = new Enemy (this.level, this.exp); return objA; } public void printInfo() { Console.WriteLine ("Level : {0}", this.level); Console.WriteLine ("Exp : {0}", this.exp); } } public static void Main (string[] args) { Enemy objA = new Enemy (); objA.level = 5; objA.exp = 80; // 얕은 복사 Enemy objB = objA; objB.exp = 120; objA.printInfo (); objB.printInfo (); // 깊은 복사 Enemy objC = objA.DeepCopy(); objC.exp = 200; objA.printInfo (); objC.printInfo (); } } } | cs |
'Programming > C#' 카테고리의 다른 글
[C# 프로그래밍] 6강 제네릭 프로그래밍 (0) | 2016.01.11 |
---|---|
[C# 프로그래밍] 5강 컬렉션 (0) | 2016.01.11 |
[C# 프로그래밍] 4장 인덱서 (0) | 2016.01.11 |
[C# 프로그래밍] 3장 프로퍼티 (0) | 2016.01.11 |
[C# 프로그래밍] 1장 C# 프로그래밍 기초 (0) | 2016.01.11 |