Programming/C# - Window

C#/ 보충 1(객체, 스레드, 컬렉션스)

esoog Polaris 2023. 9. 4. 14:46
반응형

# 객체 생성

 

using System;

namespace ConsoleApp1
{
    public class Univ
    {
        private string[] name;
        private string[] sex;
        private int[] age;

        public int[] Age
        {
            get { return age; }
            set { age = value; }
        }

        public string[] Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        public string[] Name
        {
            get { return name; }
            set { name = value; }
        }
    }
}

*Java랑 비교해 보면,

C#은 키워드로 get,set 이 프로퍼티로 사용한다.

 

 

 

 

 

# 스레드 및 컬렉션스 활용

 

using System;
using System.Collections.Generic;
using System.Diagnostics.Metrics;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        public class TimeThread
        {
            private int time;

            public int GetTime()
            {
                return time;
            }

            public void SetTime(int time)
            {
                this.time = time;
            }

            public void Ru()
            {
                for (int i = 1; i <= time; i++)
                {
                    Console.WriteLine(i);
                    try
                    {
                        Thread.Sleep(1000);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
        }

        public class MemberThread
        {
            private Univ start = new Univ();

            public void Inform()
            {
                string[] nameArray = { "a", "b", "c", "d", "e", "f", "g", "h" };
                start.Name =  nameArray;
            }

            public void Ru()
            {
                Inform();
                string[] str = start.Name;
                List<string> arr = new List<string>(str);
                Random rand = new Random();

                for (int i = arr.Count - 1; i > 0; i--)
                {
                    int j = rand.Next(i + 1);
                    string temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }

                foreach (string item in arr)
                {
                    Console.WriteLine(item);
                    try
                    {
                        Thread.Sleep(1000);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            TimeThread time = new TimeThread();
            time.SetTime(10);
            MemberThread memb = new MemberThread();

            Thread t = new Thread(
                new ThreadStart(time.Ru));
            Thread m = new Thread(
                new ThreadStart(memb.Ru));

            t.Start();
            m.Start();

            HashSet<string> hs = new HashSet<string>();
            hs.Add("hi");
            hs.Add("good");
            hs.Add("bye");

            foreach (string s in hs)
            {
                Console.WriteLine(s);
            }

            Dictionary<string, int> hm = new Dictionary<string, int>();
            hm.Add("안녕", 1);
            hm.Add("좋아", 2);
            hm.Add("바이", 3);

            foreach (var pair in hm)
            {
                Console.WriteLine(pair.Key + ": " + pair.Value);
            }
        }
    }
}

*Java와 비교해 보면, 

C#은 Thread 클래스를 상속해서 만들지 않는다.

그리고 스레드 생성 방법(Thread t = new Thread(new ThreadStart(스레드함수))빼고는,

이하 함수는 같다.

728x90

'Programming > C# - Window' 카테고리의 다른 글

C#/ API를 사용하여 JSON파일 읽기  (0) 2023.09.27
C#/ SQL server 사용  (0) 2023.09.04
C# / 동기(async), 비동기(await), 병렬(parallel) 처리  (0) 2023.08.04
C#/ Invoke()  (0) 2023.07.07
C#/ mysql 연동  (0) 2023.06.30