[0]: fact 함수 시작: fact라는 레이블로 함수가 시작됩니다.[0] addi $sp, $sp, -8: 스택 포인터 $sp를 8만큼 감소시켜 스택 공간을 할당합니다.[4] sw $ra, 4($sp): 스택에 $ra(리턴 주소)를 저장합니다.[8] sw $a0, 0($sp): 스택에 인자 $a0를 저장합니다.[16] slti $t0, $a0, 1: $a0가 1보다 작은지 비교하여 $t0에 저장합니다.[20] beq $t0, $zero, L1: 만약 $t0가 0이면 (즉, $a0가 1보다 크거나 같으면) L1으로 분기합니다.[24] addi $v0, $zero, 1: $v0에 1을 저장하여 반환할 준비를 합니다.[28] addi $sp, $sp, 8: 스택을 다시 복원합니다.[32] jr $ra: 리..
virtual 함수에 = 0을 붙이는 것과 붙이지 않는 것 사이에는 중요한 차이가 있습니다. 이 두 가지 방식은 클래스의 설계와 객체 지향 프로그래밍에서 다형성을 활용하는 방식에 영향을 미칩니다. =0을 붙인 경우: 순수 가상 함수 (Pure Virtual Function)정의: 함수 선언 끝에 = 0을 붙여 해당 함수를 순수 가상 함수로 선언합니다. 이는 함수에 대한 구현을 제공하지 않으며, 파생 클래스에서 반드시 구현해야 함을 의미합니다.추상 클래스: 순수 가상 함수를 하나라도 포함하는 클래스는 추상 클래스가 됩니다. 추상 클래스의 인스턴스는 생성할 수 없으며, 오직 파생 클래스를 통해서만 사용될 수 있습니다.용도: 인터페이스를 정의하는 데 주로 사용됩니다. 이를 통해 파생 클래스에서 특정 메소..
Action DelegateAction은 C#에서 제공하는 일반적인 델리게이트(Delegate) 타입 중 하나입니다. 델리게이트는 메서드를 참조하는 타입으로, 메서드를 변수에 할당하거나 다른 메서드의 매개변수로 전달할 수 있게 해줍니다. Action 델리게이트는 반환값이 없고 최대 16개의 매개변수를 가질 수 있는 메서드를 참조할 수 있습니다. 일반적으로 Action 델리게이트는 다음과 같은 형태를 가집니다: public delegate void Action(); 여기서 Action은 매개변수가 없고 반환값도 없는 메서드를 참조할 수 있습니다. 매개변수가 있는 Action도 존재하며, 다음과 같이 정의할 수 있습니다:public delegate void Action(T1 arg1, T2 arg2);..
C#에서 클래스의 이름으로 타입을 만든다는 것은 클래스 자체가 새로운 사용자 정의 타입(user-defined type)으로 사용된다는 의미입니다.클래스는 객체 지향 프로그래밍의 기본 단위로, 데이터(속성)와 동작(메서드)을 하나의 단위로 묶어서 표현합니다.따라서, 클래스를 정의하는 것은 새로운 데이터 타입을 정의하는 것과 같습니다. 예를 들어, 다음과 같은 클래스 정의가 있다고 가정해봅시다: public class Person { public string Name { get; set; } public int Age { get; set; } public void SayHello() { Console.WriteLine($"Hello, my name is {Name} and I am {Age} years ..
그냥 X ray찍는거임 main에서 리플렉션 사용하면 런타임, 그니까 프로그램 실행 도중에 다 뜯어보고 분석 가능 시샵에서 만든 모든 객체는 object 클래스 객체에서 파생되어 나온거라객체라면 .GetType이란것도 다들 들고있음 결국 reflection이란게 타입을 빼올 수 있는거임그리고 이것의 타입은 Type임. Type 타입 그냥 모든 정보를 빼올수있음
class Program{ static int Find() { return 0; } static void Main(string[] args) { // Nullable -> Null + able int? number = null; int c = (number != null) ? number.Value : 0; int b = number ?? 0; Console.WriteLine(b); }} static void Main(string[] args){ // Nullable -> Null + able int? number = 5; int b = number ?? 0; Console...