2014년 7월 28일 월요일

[강좌#17]메소드(method)와 parameter[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

이번 강좌에서는 C#에서의 메소드(Method) 사용법에 대해 알아 보도록 하겠습니다. 



Main역시 메소드 이며 일반적인 메소드의 선언과 크게 다르지 않습니다. 

sing System 
class Exampleclass { 
static void ExampleMethod() { 
Console.WriteLine(“메소드 예제”); } 

static void Main() { 
// ExampleMethod() ; 



물론 메소드를 하나 만들게 되면 클래스 내부 또는 외부에서 호출이 가능 합니다. 물론 그 메소드 안에서 다시 그 메소드를 부를 수 있죠... 이걸 Recursion Call(재귀호출) 아리고 하죠... 

static void ExampleMethod () { 
int numbeans; 
Console.WriteLine(“Hello”); 

if (numbeans < 10 ) >
Return; 

Console.WriteLine(“World”); 



메소드의 Return형이 void일지라도 메소드 안에서 return의 사용이 가능합니다. return문을 만나면 즉시 제어가 호출한 쪽으로 돌아 갑니다. Return 은 void 인 경우에도 사용 가능하며 , 여러 번 나타나도 되며 void 가 아닌 경우엔 반드시 ‘ } ' 를 만나기 전에 적어도 한번 나타나야 합니다. Void인 경우 return의 의미는 실행을 끝낸 다는것 입니다 



다음은 Local 변수에 대해 알아 보도록 하겠습니다. 로컬변수는 메소드 안에서 선언되는 변수이며 메소드에 대해서는 그안에서만 접근 가능하니까 private 개념이구요 메소드를 빠져 나오면 소멸 되는 변수 입니다. 로컬변수와 다른 개념으로 Shared Variables가 있는데 이것은 메소드 밖에서 선언되어 서로 그 클래스안의 메소드에서 공유가 가능한 변수를 가르키는 말입니다. 



이번에는 메소드 같은데서 사용되는 Parameter 에 대해 알아 보겠습니다... 

3가지의 Parameter 형태가 있는데 

in --> pass by value 

in/out --> pass by reference 

out --> output parameter 

의 3가지 입니다. 



static void Addone(int k) { 
++k; 

static void Main() { 
int k=6; 
Addone(k); 
Console.WriteLine(k); //display the value 6 , not 7 



위의 경우가 Pss By Value의 경우이며 기본적인 파라미터 형태 입니다. 즉 파라미터의 값이 복사되어 가는 개념 입니다. 메소드 안에서 값은 바뀔수 있지만 그것이 원래 호출한 쪽에 영향을 주는 것은 아닙니다. 



다음 예제를 보겠습니다. 

using System; 
class RefTest 

static void showDouble(ref int val) { 
val *= 2; 


static void Main() 

int number = 5; // 주의 : 호출 되는 함수가 매개변수의 값을 변형 시키므로 상수 변수를 넘겨 주어서는 안 된다. Const int number = 5; showDouble(ref number); 
Console.WriteLine("호출 전 number = {0}" ,number); 
showDouble(ref number); 
Console.WriteLine("호출 후 number = {0}" ,number); 




위의 경우는 Pass By Value의 형태인데 값이 언어가는 것이 아니라 메모리 Location의 참조(주소)가 넘어 간다고 보시면 되겠네요... 메소드 안에서 변형을 가하면 호출하는 쪽에서도 값이 바뀌어 있음을 알수 있습니다. 강연히 호출하는 쪽이나 메소드 안이나 같은 메모리 주소를 보고 있기 때문에 그러한거죠. 

다음 예제를 보겠습니다. 

using System; 
class OutTest 

static void sum(int x, int y, out int hap) 

hap = x + y; 

static void Main() 

int hap; //초기화 하지 않아도 된다. 
sum(2, 3, out hap); 
Console.WriteLine("hap = {0}" ,hap); 




이 예제는 output parameter 예에 입니다. output parameter는 다음과 같은 특징이 있습니다. 

ref 형태와 유사 하지만 실제 값이 메소드로 전달되는 것은 아닙니다. 

output으로 매개변수를 보낼때 초기화 안해도 되구요... 




다음은 parameters lists에 대해 알아 보겠습니다. 

우선 예제를 보구요... 

static long AddList(params long[] v ) { 
long total, I ; 

for ( I = 0 , total = 0 ; I < v.length ; ++I ) >
total +=v[I]; 
return total; 


static void Main() { 
long x = AddList(63,21,84); // // 몇 개이든지 보낼 수 있습니다 . 파리미터 리스트 



params라는 키워드를 사용 합니다. 보내는 곳에서 파라미터를 리스트 형태로 여러개 보낸니다. 받는 곳에서는 params라는 키워드와 배열의 형태로 값을 받을 수 있구요..이 방법은 항상 pass by value 형태로 값을 전송 합니다. 

오늘은 여기까지 하도록 하겠습니다. 다은 강좌에서는 메소드 signature, overload등에 대해 알아 보겠습니다. 

수고 하셨습니다. 



평일주간[100%환급과정]
(8/04)C#4.0,WinForm,ADO.NET
(8/04)자바기초JDBC,Servlet/JSP까지
(8/04)Spring,MyBatis,Hibernate실무과정
(8/11)PL/SQL,ORACLE HINT,TUNING
(8/11)SQL기초에서 Schema Object까지
(8/11)안드로이드개발자과정
(8/11)채용예정교육
평일야간[개인80%환급]
(8/04)웹퍼블리싱 마스터
(8/05)JSP,jQUERY,Spring,MyBatis
(8/06)Spring3.X, MyBatis, Hibernate
(8/08)C#,Network,ADO.NET,ASP.NET
(8/11)SQL기초에서실무까지
(8/11)안드로이드개발자과정
(8/28)자바JSP,jQuery,Spring,MyBatis
주말주간[개인80%환급]
(8/02)Spring3.X, MyBatis, Hibernate
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)SQL기초에서실무까지
(8/09)안드로이드개발자과정
(8/09)자바JSP,Ajax,jQuery,Spring,MyBatis
(8/23)JAVA,Network&WEB&Framework
주말야간[개인80%환급](18:30~22:20)
(8/02)JAVA,Network&WEB&Framework

댓글 없음:

댓글 쓰기