08/03

이우석·2023년 8월 6일
0

SBS 국기수업

목록 보기
11/120

ICompareable
C#에서는 자료형조차 class이고, 모두 IComparable 인터페이스를 상속 받고 있다.
그래서 IComparable 인터페이스에 따라 자료형마다 비교 함수 .CompareTo() 를 사용할 수 있다.

public static int Ascend<T>(T a, T b) where T : IComparable<T>
{
	return a.CompareTo(b);
}

이벤트
이벤트를 사용하기 위한 기본 절차
1. 델리게이트 선언
2. 클래스 내에서 위에서 선언한 델리게이트를 사용해서 이벤트를 선언
3. 이벤트 핸들러 작성
4. 이벤트 발생 시켜 핸들러 호출

namespace LearnCS_Delegate
{
	delegate void EventHandler(string message); // 1. 델리게이트 선언

	internal class MyNotis
	{
		public event EventHandler SomeHappend; // 2. 델리게이트를 사용한 이벤트 선언
		//이벤트 키워드에 의해 델리게이트가 아닌 이벤트로서 선언됨
		
		public EventHandler SomeHappy; // 일반적인 델리게이트 선언

		public void DoSomething(int num)
		{
			int temp = num % 10;
			if ( (temp != 0) && (temp % 3 == 0) ) //3, 6, 9 대충 30 미만이면 정상적인 3, 6, 9
			{
				SomeHappend($"{num} : 짝");
			}
			else
			{
				Console.WriteLine(num);
			}
		}
	}
}

namespace LearnCS_Delegate
{
	internal class Program
	{
		static void Main(string[] args)
		{
		            MyNotis me = new MyNotis();
		            me.SomeHappy = new EventHandler(DialogHandler);
		            me.SomeHappy("Test");
		            me.SomeHappy += new EventHandler(DialogHandler);
		            me.SomeHappy("Test");
		            //SomeHappy 는 이벤트가 아닌 델리게이트이므로 =로도 작동한다

		            MyNotis notis = new MyNotis();
		            notis.SomeHappend += new EventHandler(DialogHandler);
		
		            for (int n = 1; n < 30; n++)
		            {
		                notis.DoSomething(n);
		            }
		            //  하진 SomeHappend는 이벤트이므로 += 로만 함수 추가가 가능하다
		            Lib.Commend("pause");
		}

        static public void DialogHandler(string msg)
        {
            Console.WriteLine(msg);
        }
}

XML 파일 생성
XML 파일 만들기에는
using System.Xml; 을 사용한다

using System.Xml;

namespace LearnCS_XML
{
    abstract class XmlClass<T> where T : XmlClass<T>
    {
        string FullPath;
        XmlDocument XmlFile;

        public XmlClass(string path)
        {
            FullPath = path;
            XmlFile = new XmlDocument();
        }

        public abstract void XmlWriter(T dataList);
        public abstract void XmlReader(out T dataList);
    }
}

이후 XmlFile 의 메소드를 이용해 Xml을 작성할 수 있다.

// 파일 기초 정보 설정
XmlFile.AppendChild(XmlFile.CreateXmlDeclaration("1.0", "utf-8", "yes"));

// 최상위 노드 생성
XmlNode rootNode = XmlFile.CreateNode(XmlNodeType.Element, "StudentInfo", string.Empty);
XmlFile.AppendChild(rootNode);

// 하위 노드 생성
XmlNode childNode = XmlFile.CreateNode(XmlNodeType.Element, "InfoRecord", string.Empty);
rootNode.AppendChild(childNode);

// 하위 노드에 엘레멘트 생성
// Name
XmlElement xeName = XmlFile.CreateElement("Name");
xeName.InnerText = Name;
childNode.AppendChild(xeName);

// ID
xeName = XmlFile.CreateElement("ID");
xeName.InnerText = Id.ToString();
childNode.AppendChild(xeName);

// Scores
xeName = XmlFile.CreateElement("ScoreKorean");
xeName.InnerText = Scores[(int)ScoreType.Korean].ToString();
childNode.AppendChild(xeName);

xeName = XmlFile.CreateElement("ScoreEnglish");
xeName.InnerText = Scores[(int)ScoreType.English].ToString();
childNode.AppendChild(xeName);

xeName = XmlFile.CreateElement("ScoreMath");
xeName.InnerText = Scores[(int)ScoreType.Math].ToString();
childNode.AppendChild(xeName);

XML 파일 읽기 방법

profile
게임 개발자 지망생, 유니티 공부중!

0개의 댓글