C#/์ด๊ฒƒ์ด C#์ด๋‹ค

34. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค

Rainbow๐ŸŒˆCoder 2022. 2. 15. 11:31
728x90

String.Format ๋ฉ”์„œ๋“œ (System) | Microsoft Docs (์ด๋ฒˆ ํŽ˜์ด์ง€ ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ•œ String.Format ๋ฉ”์„œ๋“œ!)

 

String.Format ๋ฉ”์„œ๋“œ (System)

์ง€์ •๋œ ํ˜•์‹์— ๋”ฐ๋ผ ๊ฐœ์ฒด์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์— ์‚ฝ์ž… ํ•ฉ๋‹ˆ๋‹ค.Converts the value of objects to strings based on the formats specified and inserts them into another string. String.Format ๋ฉ”์„œ๋“œ๋ฅผ ์ฒ˜์Œ ์‚ฌ

docs.microsoft.com

 

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ํด๋ž˜์Šค ๋ฟ์ด ์•„๋‹ˆ๋‹ค.

ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด๋Š” ๋ฌผ๋ก ์ด๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

 

ํŠนํžˆ ์•„๋ž˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์„ ๋•Œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.

- ์ƒ์†ํ•˜๋ ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ๋งŒ ์ œ๊ณต๋˜๋Š” ๊ฒฝ์šฐ : .NET SDK์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋“ค์ด ๊ทธ ์˜ˆ์ด๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ ์•ˆ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋ฉด ์ƒ์†ํ•˜๋Š” ์ˆ˜๋ฐ–์— ์—†๋‹ค.

- ์ƒ์†ํ•˜๋ ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด๋„ ์ด๋ฏธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ :

ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ธํ„ฐํŽ˜์ด์Šค์˜ '๋ชจ๋“ ' ๋ฉ”์†Œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค์— ์‚ฌ์†Œํ•œ ์ˆ˜์ •์ด๋ผ๋„ ์ด๋ฃจ์–ด์ง€๋ฉด ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ธฐ์กด ํด๋ž˜์Šค๋“ค์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ๊ธฐ์กด์˜ ์†Œ์Šค ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค.

 

interface ํŒŒ์ƒ์ธํ„ฐํŽ˜์ด์Šค : ๋ถ€๋ชจ์ธํ„ฐํŽ˜์ด์Šค
{
	//...์ถ”๊ฐ€ํ•  ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก
}

ํŒŒ์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธ๋œ ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค.

 

 

interface ํŒŒ์ƒ์ธํ„ฐํŽ˜์ด์Šค : ๋ถ€๋ชจ์ธํ„ฐํŽ˜์ด์Šค

{

     //...์ถ”๊ฐ€ํ•  ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก

}

 

ํŒŒ์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธ๋œ ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค.

๋‹ค์Œ์˜ ILogger ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด...

 

interface ILogger

{

     void WriteLog(string message);

}

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ILogger ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ณผ ๋•Œ,

๋‹ค์Œ์˜ IFormattableLogger ์ธํ„ฐํŽ˜์ด์Šค๋Š”

ILogger์— ์„ ์–ธ๋œ void WriteLog(string messsage)์™€

void WriteLog(string format, params Object[] args) ๋ฉ”์†Œ๋“œ ๋‘ ๊ฐœ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

 

interface IFormattableLogger : ILogger

{

     void WriteLog(string format, parans Object[] args);

}

 

<์˜ˆ์ œ>

using System;

namespace DerivedInterface
{
    interface ILogger
    {
        void WriteLog(string message);
    }

    interface IFormattableLogger : ILogger
    {
        void WriteLog(string format, params object[] args);
    }

    class ConsoleLogger2 : IFormattableLogger
    {
        public void WriteLog(string message)
        {
            Console.WriteLine("{0} {1}",DateTime.Now.ToLocalTime(),message);
        }

        public void WriteLog(string format, params object[] args)
        {
            String message = String.Format(format, args);
            Console.WriteLine("{0} {1}",DateTime.Now.ToLocalTime(), message);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            IFormattableLogger logger = new ConsoleLogger2();
            logger.WriteLog("The world is not flat.");
            logger.WriteLog("{0}-> {1} ->{2}", 0,1,2);
        }
    }
}

 

<์˜ˆ์ œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ>

2022-02-22 ์˜ค์ „ 11:58:12 The world is not flat.
2022-02-22 ์˜ค์ „ 11:58:12 0-> 1 ->2

 

 

 

<์˜ˆ์ œ ๋นŒ๋“œ์—…>

using System;
using System.IO;

namespace DerivedInterface
{
    interface ILogger // ์ธํ„ฐํŽ˜์ด์Šค!
    {
        void WriteLog(string message);
    }

    class ConsoleLogger2 : ILogger
    {
        public void WriteLog(string message)
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(),message);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            ILogger logger = new ConsoleLogger2();
            logger.WriteLog("The world is not flat."); //format = "The world is not flat.", args = object[0]
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:54:52 The world is not flat.
            //logger.WriteLog("{0} + {1} = {2}",1,1,2); //args[0]=1, args[1]=1, args[2]=2 //์ปดํŒŒ์ผ ์—๋Ÿฌ!
        }
    }
}

<์˜ˆ์ œ>

using System;
using System.IO;

namespace DerivedInterface
{
    interface ILogger // ์ธํ„ฐํŽ˜์ด์Šค!
    {
        void WriteLog(string message);
    }

    interface IFormattableLogger : ILogger //IFormattableLogger๋Š” ILogger๋ฅผ ์ƒ์†ํ•œ๋‹ค.
    {
        void WriteLog(string format, params Object[] args);
    }

    class ConsoleLogger2 : IFormattableLogger
    {
        public void WriteLog(string message)
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(),message);
        }
        public void WriteLog(string format, params Object[] args)
        {
            String messsage = String.Format(format, args);
            Console.WriteLine("{0} {1}",DateTime.Now.ToLocalTime(),messsage);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            IFormattableLogger logger = new ConsoleLogger2();
            logger.WriteLog("The world is not flat."); //format = "The world is not flat.", args = object[0]
            logger.WriteLog("{0} + {1} = {2}",1,1,2); //args[0]=1, args[1]=1, args[2]=2
        }
    }
}

<์˜ˆ์ œ ์ฃผ์„๋ณธ>

using System;
using System.IO;

namespace DerivedInterface
{
    interface ILogger // ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค
    {
        void WriteLog(string message);
    }

    interface IFormattableLogger : ILogger //IFormattableLogger๋Š” ILogger๋ฅผ ์ƒ์†ํ•œ๋‹ค.
    {
        void WriteLog(string format, params Object[] args);
    }

    class ConsoleLogger2 : IFormattableLogger
    {
        public void WriteLog(string message) //๊ธฐ๋ฐ˜์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ๋„ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ•จ
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
        }
        public void WriteLog(string format, params Object[] args) //ํŒŒ์ƒ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„
        {
            String messsage = String.Format(format, args);
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), messsage);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            IFormattableLogger logger = new ConsoleLogger2();
            logger.WriteLog("The world is not flat."); //format = "The world is not flat.", args = object[0]
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:55:38 The world is not flat.
            logger.WriteLog("{0} + {1} = {2}", 1, 1, 2); //format = "{0} + {1} = {2}"
            //string.Format ๋ฐ˜ํ™˜๋˜๊ณ  ๋‚œ ๋’ค message = "1 + 1 = 2"
            //args[0]=1, args[1]=1, args[2]=2
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:55:59 1 + 1 = 2
        }
    }
}

<์ถœ๋ ฅ ๊ฒฐ๊ณผ>

2022-02-15 ์˜ค์ „ 11:01:14 The world is not flat.
2022-02-15 ์˜ค์ „ 11:01:14 1 + 1 = 2

๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค...

๊ตณ์ด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ์€ ์˜ˆ์ œ์˜€์Œ

using System;
using System.IO;

namespace DerivedInterface
{

    interface IFormattableLogger
    {
        void WriteLog(string format, params Object[] args);
    }

    class ConsoleLogger2 : IFormattableLogger
    {
        public void WriteLog(string message)
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
        }
        public void WriteLog(string format, params Object[] args)
        {
            String messsage = String.Format(format, args);
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), messsage);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            IFormattableLogger logger = new ConsoleLogger2();
            logger.WriteLog("The world is not flat."); //format = "The world is not flat.", args = object[0]
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:55:38 The world is not flat.
            logger.WriteLog("{0} + {1} = {2}", 1, 1, 2); //format = "{0} + {1} = {2}"
            //string.Format ๋ฐ˜ํ™˜๋˜๊ณ  ๋‚œ ๋’ค message = "1 + 1 = 2"
            //args[0]=1, args[1]=1, args[2]=2
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:55:59 1 + 1 = 2
        }
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ

2022-02-15 ์˜ค์ „ 11:06:44 The world is not flat.
2022-02-15 ์˜ค์ „ 11:06:44 1 + 1 = 2

<์ถ”๊ฐ€ ์‹คํ—˜>

                    ILogger logger = new ConsoleLogger2();
                    logger.WriteLog("The world is not flat.");
์ปดํŒŒ์ผ ์—๋Ÿฌ -> logger.WriteLog("{0} + {1} = {2}", 1, 1, 2); //format = "{0} + {1} = {2}"

์ปดํŒŒ์ผ ์—๋Ÿฌ : ์ธ์ˆ˜ 4๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 'WriteLog' ๋ฉ”์„œ๋“œ์—  ๋Œ€ํ•œ ์˜ค๋ฒ„๋กœ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
ILogger ์—๋Š” ์ธ์ˆ˜ 4๊ฐœ๋ฅผ์‚ฌ์šฉํ•˜๋Š” 'WriteLog' ๋ฉ”์„œ๋“œ ์ •์˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

using System;
using System.IO;

namespace DerivedInterface
{
    interface ILogger // ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค
    {
        void WriteLog(string message);
    }

    interface IFormattableLogger : ILogger //IFormattableLogger๋Š” ILogger๋ฅผ ์ƒ์†ํ•œ๋‹ค.
    {
        void WriteLog(string format, params Object[] args);
    }

    class ConsoleLogger2 : IFormattableLogger
    {
        public void WriteLog(string message) //๊ธฐ๋ฐ˜์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ๋„ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ•จ
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
        }
        public void WriteLog(string format, params Object[] args) //ํŒŒ์ƒ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„
        {
            String messsage = String.Format(format, args);
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), messsage);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            ILogger logger = new ConsoleLogger2();
            logger.WriteLog("The world is not flat."); //format = "The world is not flat.", args = object[0]
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:55:38 The world is not flat.
            logger.WriteLog("{0} + {1} = {2}", 1, 1, 2); //format = "{0} + {1} = {2}"
            //string.Format ๋ฐ˜ํ™˜๋˜๊ณ  ๋‚œ ๋’ค message = "1 + 1 = 2"
            //args[0]=1, args[1]=1, args[2]=2
            //์ถœ๋ ฅ
            //2022-02-15 ์˜ค์ „ 10:55:59 1 + 1 = 2
        }
    }
}

 

728x90