C#에서 파일을 잘라내어(truncate) 특정 길이로 줄이거나 늘리려면 FileStream.SetLength 메서드를 사용하면 됩니다. 이 메서드는 스트림의 길이를 지정한 값으로 설정하여 파일 크기를 손쉽게 조절할 수 있게 해줍니다.SetLength 메서드 구문public override void SetLength(long value);여기서 매개변수 value는 64비트 정수(int64)로, 설정하고자 하는 스트림의 새로운 길이(바이트 단위)를 의미합니다.지정한 값이 현재 길이보다 작은 경우설정한 값이 스트림의 현재 길이보다 작
초기화(Initialization)란?변수를 선언하는 시점에 값을 함께 할당하는 것을 초기화(Initialization)라고 합니다.다음은 변수를 초기화하는 간단한 예제입니다.int val = 50;참고로 배열을 초기화할 때는 new 키워드가 필요하지만, 일반 변수를 초기화할 때는 new 키워드 없이 값만 할당하면 됩니다.인스턴스화(Instantiation)란?C#에서 new 키워드를 사용하여 클래스의 새로운 객체(인스턴스)를 생성하는 것을 인스턴스화(Instantiation)라고 합니다.즉, C#에서 클래스를 인스턴스화하려면 반드
C#에서 실수를 다룰 때 가장 많이 사용되는 두 가지 부동 소수점 타입이 바로 float와 double입니다. 이 두 타입을 구분하는 핵심 기준은 정밀도(precision)입니다.float vs double, 무엇이 다른가?float — 단정밀도(Single Precision)float는 단정밀도 32비트 부동 소수점 데이터 타입입니다. 메모리를 적게 사용하므로 대량의 실수 데이터를 처리할 때 유리하며, 약 6~9자리의 유효 숫자를 표현할 수 있습니다.double — 배정밀도(Double Precision)double은 배정밀도 6
C# 배열 선언과 생성의 차이C#에서 배열을 선언하는 것만으로는 메모리에 배열이 초기화되지 않습니다. 단순히 선언된 상태에서는 아직 실제 배열이 존재하지 않으며, 배열 변수를 초기화해야 비로소 값을 할당할 수 있습니다.예를 들어 다음 코드는 배열의 선언에 해당하며, 이 시점에서는 배열이 실제로 생성되지 않습니다.int[] id;new 키워드로 배열 인스턴스 생성하기반면 아래 코드처럼 작성하면 정수형 배열이 실제로 생성됩니다. C#에서 배열은 참조 타입(reference type)이기 때문에, 배열의 인스턴스를 만들려면 반드시 new
C#에서 프로그램을 밀리초 단위로 일시 중지하기C# 프로그램을 지정한 시간(x 밀리초) 동안 일시 중지하려면 Thread.Sleep() 메서드를 사용합니다. 이 메서드는 System.Threading 네임스페이스에 포함되어 있으며, 호출한 현재 스레드의 실행을 지정된 밀리초만큼 차단(blocking)합니다.예를 들어 1000밀리초(1초) 동안 대기하려면 다음과 같이 작성합니다.Thread.Sleep(1000);전체 예제 코드다음 예제는 자식 스레드(child thread)를 생성한 뒤, for 루프의 각 반복마다 1000밀리초씩 대
C#에서는 string.Empty를 사용하여 문자열 변수를 빈 값으로 초기화할 수 있습니다. 이는 큰따옴표 두 개()를 사용하는 것과 동일한 결과를 내지만, 코드의 의도를 더 명확하게 표현할 수 있다는 장점이 있습니다.string myStr = string.Empty;null 또는 빈 문자열 확인하기초기화된 문자열이 null이거나 비어 있는지 확인하려면 IsNullOrEmpty() 메서드를 사용합니다. 이 메서드는 문자열이 null이거나 길이가 0인 경우 true를 반환합니다.if (string.IsNullOrEmpty(myStr)
상속(Inheritance)이란?C#에서 상속은 새로운 클래스가 기존 클래스의 멤버(필드, 메서드, 프로퍼티 등)를 물려받도록 지정하는 객체지향 프로그래밍의 핵심 개념입니다. 이때 멤버를 제공하는 기존 클래스를 기반 클래스(Base Class), 멤버를 물려받는 새 클래스를 파생 클래스(Derived Class)라고 부릅니다.상속은 IS-A(~이다) 관계를 표현합니다. 예를 들어 포유류는 동물이다, 개는 포유류이다라는 관계가 성립하므로, 자연스럽게 개는 동물이다라는 관계도 도출할 수 있습니다.실제 코드에서는 도형(Shape)이라는
C# 중첩 클래스란 무엇인가?중첩 클래스(Nested Class)는 다른 클래스, 즉 외부 클래스(Enclosing Class) 내부에 선언된 클래스를 의미합니다. 이러한 구조에서는 바깥쪽 외부 클래스와 안쪽 내부 클래스가 함께 존재하며, 중첩 클래스는 외부 클래스의 멤버 중 하나로 취급됩니다.여기서 주목해야 할 점은 접근 권한입니다. 외부 클래스의 멤버들이라고 해서 중첩 클래스의 멤버에 자동으로 접근할 수 있는 것은 아닙니다. 단순히 클래스 간에 포함 관계가 있다는 이유만으로 서로의 내부 멤버에 자유롭게 접근하는 것은 허용되지 않
C#에서 가비지 컬렉터(Garbage Collector, GC)는 메모리의 할당과 해제를 자동으로 관리하는 역할을 담당합니다. 개발자가 직접 메모리를 관리하지 않아도 되도록 도와주는 자동 메모리 관리자라고 할 수 있습니다.가비지 컬렉터의 기본 동작 방식개발자는 메모리를 할당하거나 해제하는 방법, 그리고 해당 메모리를 사용하는 객체의 수명(lifetime)을 직접 관리할 필요가 없습니다.객체를 선언할 때 new 키워드를 사용하거나 값 형식(value type)이 박싱(boxing)될 때마다 메모리 할당이 발생합니다. 이러한 할당은 일
C#으로 프로그램을 개발하다 보면 특정 경로에 파일이 실제로 존재하는지 확인해야 하는 상황이 자주 발생합니다. 예를 들어 설정 파일을 읽거나 로그 파일을 생성하기 전에 해당 파일이 있는지 먼저 검사하면, 불필요한 예외 발생을 막고 안정적인 코드를 작성할 수 있습니다.File.Exists() 메서드란?C#에서는 System.IO 네임스페이스에 포함된 File.Exists() 메서드를 사용하여 파일의 존재 여부를 간단하게 확인할 수 있습니다. 이 메서드는 지정한 경로에 파일이 존재하면 true, 존재하지 않으면 false를 반환합니다.
C# Truncate 메서드란?C#에서 Truncate 메서드는 소수점 이하의 숫자를 모두 잘라내고 정수 부분만 남기는 기능을 합니다. 반올림이 아닌 단순 절사(버림) 방식으로 동작하기 때문에, 소수점 뒤에 어떤 숫자가 오더라도 그대로 제거됩니다.예를 들어 다음과 같은 숫자가 있다고 가정해 보겠습니다.20.35M소수점 이하 숫자를 제거하려면 decimal.Truncate() 메서드를 사용합니다.decimal.Truncate(20.35M)실행 결과는 20이 됩니다.예제 코드전체 코드는 다음과 같습니다.using System;class
C#의 ToEven은 MidpointRounding 열거형과 함께 사용되어 숫자를 가장 가까운 짝수로 반올림하는 기능을 제공합니다. 일반적인 반올림 방식과 달리, 중간값(0.5)이 나왔을 때 항상 짝수 쪽으로 반올림하는 은행가 반올림(Bankers Rounding) 방식을 따릅니다.먼저 decimal 형식의 숫자를 선언하고 초기화합니다.decimal val = 70.45M;이 숫자를 가장 가까운 짝수로 반올림하려면 다음과 같이 decimal.Round() 메서드에 MidpointRounding.ToEven 옵션을 지정합니다.deci
C#에서 일반 텍스트 파일을 열고 읽으려면 StreamReader 클래스를 사용하면 됩니다. StreamReader는 System.IO 네임스페이스에 포함되어 있으며, 텍스트 파일을 한 줄씩 또는 문자 단위로 손쉽게 읽을 수 있도록 도와주는 대표적인 클래스입니다.StreamReader로 파일 열기다음과 같이 파일 경로를 지정하여 StreamReader 객체를 생성하면 해당 파일을 읽기 모드로 열 수 있습니다.StreamReader sr = new StreamReader(d:/new.txt);파일 내용 출력하기ReadLine() 메서
C#에서는 System.IO 네임스페이스를 활용하여 텍스트 파일과 바이너리 파일 등 다양한 형식의 파일을 손쉽게 읽고 쓸 수 있습니다. 이 글에서는 두 가지 대표적인 파일 읽기 방법을 예제 코드와 함께 자세히 살펴보겠습니다.1. StreamReader를 이용한 텍스트 파일 읽기텍스트 파일을 한 줄씩 읽어 화면에 출력하는 기본적인 예제입니다. StreamReader 클래스의 ReadLine() 메서드를 사용하면 파일의 끝(EOF)에 도달할 때까지 줄 단위로 데이터를 읽을 수 있습니다.예제 코드using System; using Sys
C#에서 숨김(Hidden) 속성이 설정된 파일은 일반적인 방식으로 바로 열 수 없습니다. 따라서 숨김 파일을 열고 내용을 읽으려면 먼저 파일의 숨김 속성을 해제하여 보이는 상태로 만든 후, 일반 텍스트 파일처럼 처리하고, 작업이 끝나면 다시 숨김 속성을 설정해 주는 것이 올바른 절차입니다.1단계: 파일의 숨김 속성 해제하기FileInfo 클래스를 사용해 대상 파일의 Attributes 속성에서 Hidden 플래그를 제거하면 파일이 화면에 나타나게 됩니다.FileInfo file = new FileInfo(Environment.Cu
Java 개발자가 C#으로 넘어올 때 가장 먼저 궁금해하는 부분 중 하나가 바로 프로그램 종료 방법입니다. Java에서는 System.exit(0)을 사용하지만, C#에서는 그에 해당하는 메서드가 별도로 존재합니다.Environment.Exit() 메서드C#에서 Java의 System.exit(0)에 해당하는 코드는 다음과 같습니다.Environment.Exit(exitCode);Environment.Exit() 메서드는 현재 실행 중인 프로세스를 즉시 종료하고, 운영체제에 지정된 종료 코드(exit code)를 반환합니다. 이 메
C#에는 friend 키워드가 없다C++의 friend 함수는 해당 클래스의 범위 밖에서 정의되지만, 클래스의 모든 private 및 protected 멤버에 접근할 수 있는 특별한 권한을 갖습니다. friend 함수의 선언부가 클래스 정의 안에 나타나긴 하지만, friend 자체는 그 클래스의 멤버 함수가 아니라는 점이 핵심입니다.friend는 일반 함수, 함수 템플릿, 멤버 함수가 될 수도 있고, 클래스 또는 클래스 템플릿이 될 수도 있습니다. 만약 클래스 전체가 friend로 지정되면, 그 클래스와 모든 멤버가 대상 클래스의
JavaScript 배열을 C# 배열로 변환하는 방법JavaScript와 C#은 서로 다른 환경에서 실행되기 때문에, 두 언어 간에 데이터를 주고받으려면 문자열 형태로 변환하는 과정이 필요합니다. 이 글에서는 JavaScript 배열을 C# 배열로 변환하는 실용적인 방법을 단계별로 살펴보겠습니다.1단계: JavaScript 배열 준비하기먼저 예제로 사용할 JavaScript 배열을 만들어 보겠습니다.<script> var myArr = new Array(5);
Java의 isInstance()란 무엇인가?Java의 java.lang.Class.isInstance() 메서드는 지정된 객체가 해당 Class가 나타내는 타입과 할당 호환(assignment-compatible) 관계인지, 즉 그 클래스의 인스턴스로 취급될 수 있는지 여부를 판별합니다. 런타임 시점에 객체의 실제 타입을 안전하게 검사할 수 있는 유용한 기능입니다.C#에서 isInstance()에 해당하는 방법 3가지1. Type.IsAssignableFrom() 메서드C#에서 Java의 isInstance()와 가장 대응되는 기
C#에서 난수를 생성하려면 Random 클래스를 사용하면 됩니다. 이 클래스는 System 네임스페이스에 기본으로 포함되어 있어 별도의 참조 추가 없이 바로 사용할 수 있습니다.1. Random 객체 생성가장 먼저 Random 클래스의 인스턴스(객체)를 생성합니다.Random r = new Random();2. Next() 메서드로 범위 내 난수 얻기이제 Next() 메서드를 사용하면 지정한 범위 안에서 난수를 손쉽게 얻을 수 있습니다. 아래 코드는 10 이상 50 미만의 정수 난수를 반환합니다.r.Next(10,50);참고로 Ne