Files

182 lines
4.9 KiB
C#
Raw Permalink Normal View History

2026-03-01 13:38:37 +09:00
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Chapter3 : MonoBehaviour, IEnumerator
{
int count = 11; //<2F><EFBFBD><E2BABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> private
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD><EFBFBD>
public bool MoveNext()=> --count >=0;// count<6E><74> 1<><31><EFBFBD><EFBFBD> <20><>Ű<EFBFBD><C5B0> 0<>̻<EFBFBD><CCBB≯<EFBFBD> true <20><>ȯ
public object Current => count;// <20><><EFBFBD><EFBFBD> count <20><> <20><>ȯ
public void Reset() => count = 11;// count <20><><EFBFBD><EFBFBD> 11<31><31> <20>ʱ<EFBFBD>ȭ
// enum<75><6D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC>Ҽ<EFBFBD> <20>ְ<EFBFBD> <20>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC>Ҽ<EFBFBD> <20>ִ<EFBFBD>.
public enum BorderSide : byte// enum<75><6D> <20><20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD> int <20>̴<EFBFBD>.
{
Left = 1,
Right, // 2
Top = 4,
Bottom // 5 <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31> <20><><EFBFBD><EFBFBD>
}
// [Flags] // <20><>Ʈ <20>÷<EFBFBD><C3B7>׷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>Ʈ
// 2<><32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><> Flags<67><73> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>
[Flags] // <20>־ <20>ǰ<EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ <20>÷<EFBFBD><C3B7>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
public enum FlagsEnum : byte
{
None = 0,
A = 1 << 0, // 1
B = 1 << 1, // 2
C = 1 << 2, // 4
D = 1 << 3 // 8
}
void Start()
{
// FlagsEnum <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ϱ<EFBFBD>
foreach (FlagsEnum flag in Enum.GetValues(typeof(FlagsEnum)))
{
Debug.Log($"Flag: {flag}, Value: {(byte)flag}");
}
// Stack <20><><EFBFBD>׸<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Stack<int> intStack = new Stack<int>();
intStack.Push(10);
intStack.Push(20);
Debug.Log(intStack.Pop()); // 20 <20><><EFBFBD><EFBFBD>
Debug.Log(intStack.Pop()); // 10 <20><><EFBFBD><EFBFBD>
// Swap <20><><EFBFBD>׸<EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
int x = 5, y = 10;
Debug.Log($"Before Swap: x = {x}, y = {y}");
Swap<int>(ref x, ref y);
Debug.Log($"After Swap: x = {x}, y = {y}");
// Initialize <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
MyClass[] myClassArray = new MyClass[3];
Initialize<MyClass>(myClassArray);
foreach (var item in myClassArray)
{
Debug.Log(item != null ? $"{item}" : "Null");
}
// Initialize2 <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Initialize2<string>(new string[] { "Hello", "World", "!" });
}
/// <summary>
/// <20><><EFBFBD>׸<EFBFBD><D7B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Swap <20>޼<EFBFBD><DEBC><EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="a"></param>
/// <param name="b"></param>
void Swap<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
/// <summary>
/// <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> new() <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> ȣ<><C8A3><EFBFBD>Ҽ<EFBFBD> <20>ִ<EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="Array"></param>
void Initialize<T>(T[] Array) where T : new() // class, struct <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
{
for (int i = 0; i < Array.Length; i++)
{
Array[i] = new T();
}
}
void Initialize2<T>(T[] Array) where T : notnull // null <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
for (int i = 0; i < Array.Length; i++)
{
Debug.Log(Array[i]);
}
}
/// <summary>
/// Ȯ<>۵<EFBFBD> <20><><EFBFBD>׸<EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD> <20><><EFBFBD><EFBFBD>
/// </summary>
SpecialStack<int> specialStack = new SpecialStack<int>();
void Update()
{
if (Keyboard.current.wKey.isPressed)
{
specialStack.PushWithLog(UnityEngine.Random.Range(1, 100));
}
if (Keyboard.current.sKey.isPressed)
{
specialStack.PopWithLog();
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>׸<EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD>
/// </summary>
Balloon redBalloon = new Balloon { Color = "Red" };
Balloon blueBalloon = new Balloon { Color = "Blue" };
[ContextMenu("CompareBalloons")] /// <20><><EFBFBD><EFBFBD>Ƽ <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><>Ŭ<EFBFBD><C5AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public void CompareBalloons()
{
bool areEqual = redBalloon.Equals(blueBalloon);
Debug.Log($"Are balloons equal? {areEqual}");// False <20><><EFBFBD><EFBFBD>
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD> <20><EFBFBD><E2BABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> public <20>̴<EFBFBD> <20><><EFBFBD><EFBFBD>,<2C>Լ<EFBFBD>...
/// </summary>
interface IEnumerator // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD> <20><EFBFBD><E2BABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> public <20>̴<EFBFBD>
{
bool MoveNext();
object Current { get; }
void Reset();
}
/// <summary>
/// <20><><EFBFBD>׸<EFBFBD><D7B8><EFBFBD> <20><><EFBFBD>ø<EFBFBD>ȭ<EFBFBD><C8AD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20>Լ<EFBFBD><D4BC>̴<EFBFBD>.
/// </summary>
/// <typeparam name="T"></typeparam>
class Stack<T>// Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2BABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> internal <20>̴<EFBFBD>
{
int position;
T[] items = new T[100];
public void Push(T i) => items[position++] = i;
public T Pop() => items[--position];
}
/// <summary>
/// <20>Ļ<EFBFBD><C4BB><EFBFBD> <20><><EFBFBD>׸<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>׸<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
class SpecialStack<T> : Stack<T>
{
public void PushWithLog(T value)
{
Debug.Log($"Push: {value}");
Push(value);
}
public T PopWithLog()
{
T value = Pop();
Debug.Log($"Pop: {value}");
return value;
}
}
interface IEquatable<T> { bool Equals (T obj ); }/// <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>
class Balloon : IEquatable<Balloon> // <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD><EFBFBD>
{
public string Color { get; set; }
public bool Equals(Balloon other)
{
return this.Color == other.Color;
}
}