728x90
- this 키워드
- 객체 자신을 참조하는 키워드
- 사용처
1) 함수의 파라미터 이름과 멤버 변수 이름이 동일
2) 클래스 내부에서 멤버변수를 접근
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _079_this
{
class AA
{
int a; //this가 가리키는 객체, private 속성
public AA(int a)
{
this.a = a;
}
public void Print()
{
int a = 100;
this.a = 1000;
Console.WriteLine("a : {0}", a);
Console.WriteLine("this.a : {0}", this.a);
}
}
class Program
{
static void Main(string[] args)
{
AA aa = new AA(10);
aa.Print(); //100, 1000
}
}
}
- static 키워드
- 클래스의 멤버(필드, 메소드)를 객체 생성 없이 사용 가능(new 없이)
- 클래스 static 필드(변수)
- 클래스 static 메소드(함수)
- static 메소드 내부에 사용하는 변수는 반드시 static
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _080_static
{
class AA
{
public static int a;
public static int b;
public static readonly int c = 200; //읽기 전용, 상수화
public int num;
public static void Print()
{
Console.WriteLine("a: {0}", a);
Console.WriteLine("b: {0}", b);
//num = 100; //오류
}
}
class BB
{
public int a;
public int b;
public void Print()
{
Console.WriteLine("a: {0}", a);
Console.WriteLine("b: {0}", b);
}
}
class Program
{
static void Main(string[] args)
{
AA.a = 10; //객체 생성 없이 바로 접근
AA.b = 100; //객체 생성 없이 바로 접근
//AA.c = 200; //오류 : readonly이므로 변경 불가
AA.Print(); //객체 생성 없이 바로 접근
//BB.a //오류
//BB.b //오류
//BB.Print(); //오류
BB bb = new BB();
bb.a = 100;
bb.b = 200;
bb.Print();
Console.ReadKey();
}
}
}
- 클래스의 메소드 활용
- 클래스가 메소드의 파라미터
- 클래스가 메소드의 리턴형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _081_class_parameter
{
class AA
{
public int a;
public int b;
public AA()
{
a = 0;
b = 0;
}
public void Print()
{
Console.WriteLine();
Console.WriteLine("a : {0}", a);
Console.WriteLine("b : {0}", b);
}
}
class Program
{
static void Main(string[] args)
{
AA aa = new AA();
aa.Print();
CopyRefClass(aa);
aa.Print();
AA aaa = CopyDeepClass(aa);
aaa.Print();
aa.Print();
}
static void CopyRefClass(AA aa)
{
AA refAA = aa;
refAA.a = 100;
refAA.b = 10000;
}
static AA CopyDeepClass(AA aa)
{
AA tempAA = new AA();
tempAA.a = aa.a;
tempAA.b = aa.b;
tempAA.a = 0;
return tempAA;
}
}
}
728x90
'게임 프로그래밍 > C#' 카테고리의 다른 글
C# 클래스 다형성 (0) | 2021.12.19 |
---|---|
C# 클래스 상속, is/as 키워드 (0) | 2021.12.16 |
C# 클래스(접근 한정자, 생성자, 소멸자) (0) | 2021.12.15 |
C# 메서드 오버로딩(Method Overloading) (0) | 2021.12.14 |
C# Call by Value/Call by Reference 차이 (0) | 2021.12.14 |