C#

[C#] ref & out

๐ŸŸฆ ref & out

ref์™€ out ๋ชจ๋‘ ๋ฉ”์„œ๋“œ์— ์ธ์ž๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ฐจ์ด์ ์ด ์žˆ์œผ๋‹ˆ ์ด๋ฅผ ๊ณ ๋ คํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

๐ŸŸง Document

ref ๋ฌธ์„œ

out ๋ฌธ์„œ

 

 

 

๐ŸŸง ref ํ‚ค์›Œ๋“œ

int a = 1; // ์ดˆ๊ธฐํ™” ํ•„์ˆ˜

// a๋ผ๋Š” ์ธ์ž๋ฅผ ๋„˜๊ฒจ๋ฐ›์Œ
public void ChangeValue(ref int a)
{
}

- ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ง€๊ธฐ ์ „์— ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

- ๋ฉ”์„œ๋“œ ์™ธ๋ถ€์—์„œ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค.

 

 

 

๐ŸŸง out ํ‚ค์›Œ๋“œ

int a;	// ์ดˆ๊ธฐํ™”ํ•  ํ•„์š” ์—†์Œ.

// ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•œ ๊ฐ’์„ a์—๊ฒŒ ๋„˜๊ฒจ์คŒ
public void ChangeValue(out int a)
{
}

- ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

- a๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌ๋œ ๊ฐ’์„ a์— ๋„ฃ์–ด์ฃผ๋Š” ๊ฐœ๋…์ด๋‹ค.

 

 

 

๐ŸŸง ์˜ค๋ฒ„๋กœ๋”ฉ

public void ChangeValue(ref int a)
{
}

public void ChangeValue(out int a)
{
}

- ๋Ÿฐํƒ€์ž„ ๋™์•ˆ์€ ๋‘๊ฐœ์˜ ํ‚ค์›Œ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

- ํ•˜์ง€๋งŒ ์ปดํŒŒ์ผํ•  ๋•Œ๋Š” ๋‘ ํ‚ค์›Œ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€์•Š๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค.

- ๋”ฐ๋ผ์„œ ๋‘ ํ‚ค์›Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉํ•  ์ˆ˜ ์—†๋‹ค.

'C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C#] Nullable Type  (0) 2022.11.14
Interface, Abstract, Virtual  (0) 2021.11.12
C# ์ฃผ์„์— ๋Œ€ํ•œ XML ํƒœ๊ทธ  (0) 2021.11.01