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

11. null ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž

Rainbow๐ŸŒˆCoder 2022. 2. 8. 11:00
728x90

๋„null ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž ?.๋Š” C# 6.0์—์„œ ๋„์ž…๋˜์—ˆ๋‹ค.

 

?.๊ฐ€ ํ•˜๋Š” ์ผ์€ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ null์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ

๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(์ฆ‰, ๊ฐ์ฒด๊ฐ€ null)์ด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋กœ null์„ ๋ฐ˜ํ™˜ํ•˜๊ณ ,

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” . ๋’ค์— ์ง€์ •๋œ ๋ฉค๋ฒ„๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

==์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ์ฝ”๋“œ ?. ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ์ฝ”๋“œ
class Foo
{
     public int member;
}

Foo foo = null;

int?bar;
if(foo==null)
     bar = null;
else
     bar = foo.member;
class Foo
{
     public int member;
}

Foo foo = null;

int? bar;
bar = foo?.member;
//foo ๊ฐ์ฒด๊ฐ€ null์ด ์•„๋‹ˆ๋ฉด member ํ•„๋“œ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์คŒ

?[]๋„ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

?[]๋Š” ?.์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜์ง€๋งŒ,

๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ์ ‘๊ทผ์ด ์•„๋‹Œ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์˜ ์ฒจ์ž๋ฅผ ์ด์šฉํ•œ ์ฐธ์กฐ์— ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

 

์†Œ์Šค์ฝ”๋“œ

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Hello
{
    class MainApp
    {
        static void Main(string[] args)
        {
            ArrayList a = null;
            a?.Add("์•ผ๊ตฌ"); //a?.๊ฐ€ null์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ Add() ๋ฉ”์†Œ๋“œ๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š์Œ
            a?.Add("์ถ•๊ตฌ");
            WriteLine($"Count : {a?.Count}");//a?.๊ฐ€ null์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ "Count:"์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
            WriteLine($"{a?[0]}"); //์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ
            WriteLine($"{a?[1]}"); //์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ

            a = new ArrayList(); //์ด์ œ ๋”์ด์ƒ null์ด ์•„๋‹ˆ๋‹ค.
            a?.Add("์•ผ๊ตฌ");
            a?.Add("์ถ•๊ตฌ");
            WriteLine($"Count : {a?.Count}");//2
            WriteLine($"{a?[0]}"); //์•ผ๊ตฌ
            WriteLine($"{a?[1]}"); //์ถ•๊ตฌ
        }
    }
}

์ถœ๋ ฅ๊ฒฐ๊ณผ

Count :


Count : 2
์•ผ๊ตฌ
์ถ•๊ตฌ

 

728x90