1)
class ParamValue
{
public void Increase(out int n)
{
//Console.WriteLine(n);
n = 11;
}
static void Main(string[] args)
{
int i = 6;
ParamValue pv = new ParamValue();
pv.Increase(out i);
Console.WriteLine("호출후 값 : {0}", i);
}
}
2) params
C# params 규칙
1. params 키워드는 타입 왼쪽에 기입
2. 반드시 1차원 배열로 선언
public class VariableLength
{
public int VarMethod(params int[] arr)
{
int sum = 0;
//for(int i = 0; i< arr.Length; i++)
//{
// sum = sum + arr[i];
//}
foreach (int n in arr)
{
sum = sum + n;
}
return sum;
}
public static void Main(string[] args)
{
int result;
VariableLength vl = new VariableLength();
result = vl.VarMethod(10, 20);
Console.WriteLine(result);
result = vl.VarMethod(1, 2, 3, 4);
Console.WriteLine(result);
}
}
public class ParamValue
{
public static void VarMethod(params object[] arr)
{
Console.WriteLine("[가변 인자 개수] : " + arr.Length);
Console.Write("[인자 전체 ] : ");
foreach(object one in arr)
{
Console.Write(one + " ");
}
Console.WriteLine();
Console.Write("[문자열 타입] : ");
for(int i = 0; i < arr.Length; ++i)
{
Type t = arr[i].GetType();
if(t.Equals(typeof(System.String)))
{
Console.Write(arr[i] + " ");
}
}
Console.WriteLine();
Console.Write("[정수 타입] : ");
foreach(object one in arr)
{
Type t = one.GetType();
if(t.Equals(typeof(System.Int32)))
{
Console.Write(one + " ");
}
}
Console.WriteLine();
Console.Write("[실수 타입] : ");
foreach (object one in arr)
{
Type t = one.GetType();
if (t.Equals(typeof(System.Single)) || t.Equals(typeof(System.Double)))
{
Console.Write(one.ToString() + " ");
}
}
Console.WriteLine();
}
static void Main(string[] args)
{
VarMethod(1000, 2000, "3000", "헬로", 3.1, 3.2f);
}
}
cf. 예약어
3) 메서드 오버로딩
static int Add(int iNum1, int iNum2)
{
int iNum3 = iNum1 + iNum2;
return iNum3;
}
static void Main(string[] args)
{
int Num1 = 3;
int Num2 = 4;
int Num3 = Num1 + Num2;
Console.WriteLine($"{Num1} + {Num2} = {Num3}");
int iNum4 = Add(5, 6);
Console.WriteLine($"{5} + {6} = {iNum4}");
}
static double Add(double Num1, double Num2)
{
double Num3 = Num1 + Num2;
return Num3;
}
static float Add(float Num1, float Num2)
{
float Num3 = Num1 + Num2;
return Num3;
}
static int Add(int iNum1, int iNum2)
{
int iNum3 = iNum1 + iNum2;
return iNum3;
}
static double AddDouble(double Num1, double Num2)
{
double Num3 = Num1 + Num2;
return Num3;
}
static float AddFloat(float Num1, float Num2)
{
float Num3 = Num1 + Num2;
return Num3;
}
static int AddInt(int iNum1, int iNum2)
{
int iNum3 = iNum1 + iNum2;
return iNum3;
}
static void Main(string[] args)
{
int Num1 = 3;
int Num2 = 4;
int Num3 = Num1 + Num2;
Console.WriteLine($"{Num1} + {Num2} = {Num3}");
int iNum4 = AddInt(5, 6);
Console.WriteLine($"{5} + {6} = {iNum4}");
float fNum4 = AddFloat(5.1f, 6.1f);
Console.WriteLine($"{5.1} + {6.1} = {fNum4}");
double dNum4 = AddDouble(5.1, 6.1);
Console.WriteLine($"{5.1} + {6.1} = {dNum4}");
Console.WriteLine($"{5} + {6} = {Add(5, 6)}");
}
4) 배열
Console.WriteLine("행의 갯수를 입력하세요");
string s1 = Console.ReadLine();
Console.WriteLine("열의 갯수를 입력하세요");
string s2 = Console.ReadLine();
int rows = int.Parse(s1);
int cols = int.Parse(s2);
int[,] myArray = new int[rows, cols];
Console.WriteLine(rows + "*" + cols + "배열이 생성되었습니다.");
int[] Array1 = new int[4];
int[,] Array2 = new int[2, 3];
int[,,] Array3 = new int[2, 4, 3];
Console.WriteLine("Array1의 차원 : " + Array1.Rank);
Console.WriteLine("Array2의 차원 : " + Array2.Rank);
Console.WriteLine("Array3의 차원 : " + Array3.Rank);
int[] Array1 = new int[4];
int[,] Array2 = new int[2, 3];
int[,,] Array3 = new int[2, 4, 3];
Console.WriteLine("Array1의 크기 : " + Array1.Length);
Console.WriteLine("Array2의 크기 : " + Array2.Length);
Console.WriteLine("Array3의 크기 : " + Array3.Length);
class ArraySort
{
static void Main(string[] args)
{
int i = 0;
int[] SortArray = new int[5] { 15, 32, 11, 20, 41 };
Console.WriteLine("현재배열 출력 : ");
for (i = 0; i < SortArray.Length; i++)
{
Console.WriteLine(SortArray[i]);
}
System.Array.Sort(SortArray);
Console.WriteLine("정렬된 배열 출력 : ");
for(i = 0; i<SortArray.Length;i++)
{
Console.WriteLine(SortArray[i]);
}
}
}
class ArrayClear1
{
static void Main(string[] args)
{
int[] ClearArray = { 5, 4, 2, 6, 7, 1 };
Console.WriteLine("********************클리어 전*********************");
foreach(int iNum in ClearArray)
{
Console.WriteLine(iNum);
}
Array.Clear(ClearArray, 0, ClearArray.Length);
Console.WriteLine("********************클리어 후*********************");
foreach(int iNum in ClearArray)
{
Console.WriteLine(iNum);
}
}
}
class ArrayClear2
{
static void Main(string[] args)
{
int i = 0;
int[] ClearArray = { 5, 4, 2, 6, 7, 1 };
Array.Clear(ClearArray, 1, 2);
for(i = 0; i < ClearArray.Length; i++)
{
Console.WriteLine(ClearArray[i]);
}
}
}
class ArrayClone
{
static void Main(string[] args)
{
int i = 0;
int[] Original = { 5, 4, 2, 6, 7, 1 };
int[] Clone = (int[])Original.Clone();
for (i = 0; i < Clone.Length; i++)
{
Console.WriteLine(Clone[i]);
}
Original[3] = 20;
Console.WriteLine("복제배열[3] : " + Clone[3]);
}
}
class test
{
static void Main(string[] args)
{
int i = 0;
int[] Original = { 5, 4, 2, 6, 7, 1 };
int[] Clone = (int[])Original.Clone();
Console.Write("Original : ");
foreach(int one in Original)
{
Console.Write(one + " ");
}
Console.WriteLine();
Console.Write("Clone : ");
foreach (int one in Clone)
{
Console.Write(one + " ");
}
Console.WriteLine();
Console.WriteLine("************************");
Array.Sort(Clone);
Console.Write("Original : ");
foreach (int one in Original)
{
Console.Write(one + " ");
}
Console.WriteLine();
Console.Write("Clone : ");
foreach (int one in Clone)
{
Console.Write(one + " ");
}
Console.WriteLine();
}
}