C#/C#

C#(5) : ๊ฐ’ํ˜•์‹์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ์ฒ˜๋ฆฌ vs ๋ž˜ํผ๋Ÿฐ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ์ฒ˜๋ฆฌ

Rainbow๐ŸŒˆCoder 2022. 1. 22. 02:41
728x90

๊ฐ’ํ˜•๊ณผ ๋ž˜ํผ๋Ÿฐ์Šค ํ˜•์„ ๊ตฌ๋ถ„ํ•  ์ค„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ์„ ์–ธ๋งŒ ํ•œ ๊ฒƒ -> ๊ฐ’ํ˜•

์ž๊ธฐ๋งŒ ๋งŒ๋“  ํด๋ž˜์Šค๋ฅผ new ํด๋ž˜์Šค๋ช…();ํ•ด์„œ ๋งŒ๋“  ๊ฒƒ์„ ๊ทธ ํด๋ž˜์Šค๋ช…์— ๋ฐ›์œผ๋ฉด ๋ž˜ํผ๋Ÿฐ์Šคํ˜•!

 

๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ๊ณต์งœ๊ฐ€ ์—†๋‹ค.  = ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง€๋ถˆํ•œ๋‹ค.

ํ•จ์ˆ˜์˜ ์‹คํ–‰์กฐ์ฐจ ๊ณต์งœ๊ฐ€ ์—†๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ๋ฅผ ์•ˆ๋‹ค๋Š” ๊ฒƒ์€ ์ฝ”๋“œ์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ์•„๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

 

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง€๋ถˆํ–ˆ๋‹ค๋Š” ๊ฒƒ.

 

[์ฝ”๋“œ] : ์ƒ์ˆ˜, ํด๋ž˜์Šค ์„ ์–ธ ๊ทธ ์ž์ฒด. ํ•จ์ˆ˜์˜ ๋‚ด์šฉ ๊ทธ์ž์ฒด. ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋“ค์ด ๋“ค์–ด๊ฐ

[๋ฐ์ดํ„ฐ]

[ํž™] : new ํด๋ž˜์Šค๋ช…() ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค ๊ฐ์ฒด๋“ค์˜ ๋ณธ์ฒด๊ฐ€ ์—ฌ๊ธฐ ์žˆ๋‹ค.

[์Šคํƒ] :

        //๋ฉ”์ธ ํ•จ์ˆ˜
        //C#์˜ ์•ฝ์†. ์ด๊ณณ์„ ์‹œ์ž‘์ด๋ผ๊ณ  ์žก์€ ํ•จ์ˆ˜
        //Main์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ•จ์ˆ˜์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘
        static void Main(string[] args)

        //์ฆ‰ Main ์•ˆ์—์„œ ํ•œ๋ฒˆ ์‹คํ–‰๋œ(์ข…๋ฃŒ๋œ) ์ฝ”๋“œ๋Š” ์Šคํƒ์— ๋‹ด๊ฒผ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง

        //ํ•จ์ˆ˜๋Š” ๋ฌผ๋ก , ๊ทธ ์•ˆ์— ์žˆ๋Š” ์ธ์ž๋„ ์Šคํƒ์— ์žˆ๋‹ค ์‚ฌ๋ผ์ง.

        (์ง€์—ญ ๋ณ€์ˆ˜ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๋ฉ”๋ชจ๋ฆฌ์— ์†ํ•˜๊ฒŒ ๋œ๋‹ค.)

        ์‰ฝ๊ฒŒ ๋งํ•ด ํ•จ์ˆ˜์˜ ๋ฐ•์Šค- ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(๊ทธ ๋ฐ•์Šค ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ์ง€์—ญ๋ณ€์ˆ˜)

 

๋ฉ”์ธ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋žจ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ๋ผ์ง

ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ธ์ž๋กœ ๋„˜๊ฒจ์„œ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋ฒŒ์–ด์ง€๋Š” ์ผ๋“ค์€ ๋‹จ์ง€ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋ฒŒ์–ด์งˆ ๋ฟ์ด๋‹ค.

๋ง์žฅ๋‚œ๊ฐ™์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดํ•ดํ•œ๋‹ค๋ฉด ๋ชจ๋ฅผ ์ˆ˜ ์—†๋Š” ์‚ฌ์‹ค.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class User
{
    private int Hp = 100;

    public void Test(int value)
    {
        value = 1000;
    }
}

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            User NewUser = new User();
            int value = 100;
            NewUser.Test(value);
        }
    }
}

๊ทธ๋ ‡๋‹ค๋ฉด ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์™ธ๋ถ€์—๋„ ์ ์šฉ์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ.

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จ.

return์„ ํ†ตํ•ด ํด๋ž˜์Šค ์™ธ๋ถ€๋กœ ๋ฝ‘์•„๋‚ด์ฃผ๋ฉด ๋œ๋‹ค.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class User
{
    private int Hp = 100;

    public int Test(int value)
    {
        value = 1000;
        return value;
    }
}

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            User NewUser = new User();
            int value = 100;
            value = NewUser.Test(value);
        }
    }
}

์œ„๋ฅผ ๊ฐ’ํ˜•์˜ ์ฒ˜๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

๊ฐ€์žฅ ์•„๋ž˜๋Š” ๋ž˜ํผ๋Ÿฐ์Šค ํ˜•์— ๊ด€๋ จํ•œ ์†Œ์Šค์ฝ”๋“œ์ด๋‹ค.

ํด๋ž˜์Šค๊ฐ€ ๊ฐ์ฒดํ™”๋œ ๊ฒƒ์€ ๋ž˜ํผ๋Ÿฐ์Šค ํ˜•์ด๋ผ๋Š” ์ž๋ฃŒํ˜•์ด ๋œ๋‹ค.

int bool ๋“ฑ์˜ ๊ฐ’ํ˜•๊ณผ

๋ž˜ํผ๋Ÿฐ์Šคํ˜•์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜์™€ ์‚ฌ์šฉ๋ฒ•์ด ์•„์˜ˆ ๋‹ค๋ฅด๋‹ค. new๋กœ ์ƒ์„ฑํ•œ ์นœ๊ตฌ๋“ค์€ ํž™์— ์˜ฌ๋ผ๊ฐ„๋‹ค.

์กฐ๊ธˆ ๋” ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด, ๋ž˜ํผ๋Ÿฐ์Šค๋Š” ํž™์— ์ƒ์„ฑ๋œ ์–ด๋– ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์ด๋‹ค.

 

[์ฝ”๋“œ] : ์ƒ์ˆ˜, ํด๋ž˜์Šค ์„ ์–ธ ๊ทธ ์ž์ฒด. ํ•จ์ˆ˜์˜ ๋‚ด์šฉ ๊ทธ์ž์ฒด. ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋“ค์ด ๋“ค์–ด๊ฐ

[๋ฐ์ดํ„ฐ]

[ํž™] : new User(); new Monster(); ์‹ค์ œ ๋งŒ๋“ค์–ด์ง„ ๋…€์„๋“ค

[์Šคํƒ] :

        //๋ฉ”์ธ ํ•จ์ˆ˜

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class User
{
    public int Ap = 10;
    public int Hp = 100;

    public void Att(Monster monster)
    {
        monster.Hp -= Ap;
    }
}

class Monster
{
    public int Ap = 10;
    public int Hp = 100;

    public void Att(User user)
    {
        user.Hp -= Ap;
    }
}

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            User NewUser = new User();
            Monster NewMonster = new Monster();
            int value = 100;
            NewMonster.Att(NewUser);//90
        }
    }
}
728x90