study

[C#] Chapter 11. Array

yz 2022. 6. 2. 17:21

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MyFirstCSharp_01
{
    public partial class Chap11_Array : Form
    {
        // 배열 : 같은 데이터 타입의 여러 데이터가 있을 경우 하나의 배열 변수 이름으로 정의하는 데이터 형식
        public Chap11_Array()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 1. 배열을 초기화
            int[] iaValue = new int[10];
            int[] iaValue1 = new int[5] { 10, 2, 30, 3, 40 }; //[5]개가 들어가야함
            int[] iaValue2 = new int[] { 10, 20, 30, 40 }; //미지정으로 몇 개가 와도 상관없다
            int[] iaValue3 = { 1, 2 };

            string[] sValue1 = "ABCD/EFG".Split('/');
            int[] iValue4 = new int[iaValue.Length];

            // 2. 배열에서 사용할 수 있는 주요 기능
            // 배열 정렬
            Array.Sort(iaValue1);
            foreach (int ivalue in iaValue1)
            {
                // MessageBox.Show(Convert.ToString(ivalue)); //2, 3, 10, 30, 40
            }

            // 특정 데이터의 index 를 반환하는 기능
            int iIndex = Array.IndexOf(iaValue1, 30);
            // MessageBox.Show($"30 의 Index 는 : {iIndex}");

            // 배열을 복사하는 방법.
            //int[] iaValue4 = iaValue3; // 참조 (주소값만) 복사해서 공유하는 형태
            //MessageBox.Show($"iaValue4 의 첫번째 값은 : {iaValue4[0]} 입니다.");
            //iaValue3[0] = 3;
            //MessageBox.Show($"iaValue4 의 첫번째 값은 : {iaValue4[0]} 입니다.");

            // 배열의 크기를 조정한다. <Array.Resize>
            Array.Resize<int>(ref iaValue1, 3);
            //foreach (int ivalue in iaValue1)
            //{
            //    MessageBox.Show(Convert.ToString(ivalue));
            //}

            // 배열을 전체적으로 초기화 <Array.Clear>
            Array.Clear(iaValue1, 0, iaValue1.Length);
            foreach (int ivalue in iaValue1)
            {
                MessageBox.Show(Convert.ToString(ivalue));
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 2차원 배열의 초기화하는 방법.
            int[,] iaArray = new int[2, 3];
            iaArray[0, 0] = 1;
            iaArray[0, 1] = 2;
            iaArray[0, 2] = 3;
            iaArray[1, 0] = 4;
            iaArray[1, 1] = 5;
            iaArray[1, 2] = 6;

            int[,] aArray2 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };

            // 행의 수 구하는 기능
            int iArrayRowCount = aArray2.GetLength(0); //0 고정

            // 열의 수 구하는 기능
            int iArrayColumnCount = aArray2.GetLength(1); //1 고정

            // 1. 위의 배열을 텍스트 박스에 표현하세요.
            textBox1.Text = "---------For---------\r\n";
            string sArrayList = string.Empty; //문자열은 null을 허용해서 string sArrayList;여도 동작
            for (int x = 0; x < iArrayRowCount; x++)
            {
                for (int y = 0; y < iArrayColumnCount; y++)
                {
                    sArrayList += $"aArray2 의 [{x}, {y}] 의 값은 : {aArray2[x, y]}     "; //보간은 형변환 자동
                }
                textBox1.Text += sArrayList + "\r\n"; //누적된 값을 텍스트에 담음
                sArrayList = ""; //이전 행의 누적된 결과를 지우고 새 행 시작
            }

            // 2. Foreach
            textBox1.Text += "---------Foreach---------\r\n";
            //textBox1.Text = textBox1.Text + "----------For----------\r\n";
            int iColumnCount = 0;
            foreach(int iResult in aArray2)
            {
                sArrayList += $"{iResult}, ";
                if (++iColumnCount == iArrayColumnCount)
                {
                    sArrayList += "\r\n";
                    iColumnCount = 0;
                }
            }
            textBox1.Text += sArrayList;
        }
    }
}
LIST