C#에서 정적 메서드(Static Method)는 어떻게 정의하나요?
_____A1: 정적 메서드는 클래스의 인스턴스 없이 클래스 이름으로 직접 호출할 수 있는 메서드입니다. 주로 공통 기능을 제공하거나 상태와 무관한 동작을 수행할 때 사용됩니다.
Q2: C 에서 정적 메서드는 어떻게 정의하나요?
A2: 메서드 선언 앞에 `static` 키워드를 붙여서 정의합니다. 예를 들어:
```csharp
public static void MyStaticMethod()
{
// 메서드 내용
}
```
Q3: 정적 메서드는 어디에서 호출하나요?
A3: 클래스 이름을 통해 호출합니다. 인스턴스 생성 없이 `ClassName.MyStaticMethod()` 형태입니다.
Q4: 정적 메서드 내부에서 인스턴스 멤버에 접근할 수 있나요?
A4: 아닙니다. 정적 메서드는 인스턴스 멤버(변수, 메서드)에 직접 접근할 수 없고, 정적 멤버만 접근할 수 있습니다.
Q5: 정적 메서드의 대표적인 사용 예는 무엇인가요?
A5: 유틸리티 함수, 수학 계산 메서드, 팩토리 메서드 등이 있습니다. 예를 들어 `Math.Sqrt()`는 정적 메서드입니다.
A6: 정적 메서드는 인스턴스 생성과 무관하며, 정적 생성자(static constructor)는 클래스가 처음 사용될 때 단 한번 호출되어 정적 필드를 초기화합니다.
Q7: 예시 코드를 보여주세요.
A7:
```csharp
public class Utility
{
public static int Add(int a, int b)
{
return a + b;
}
}
// 호출
int result = Utility.Add(3, 4);
Console.WriteLine(result); // 출력: 7
```
Q8: instance 메서드와 static 메서드의 차이는 무엇인가요?
A8: 인스턴스 메서드는 클래스의 객체를 생성해야 호출 가능하지만, 정적 메서드는 객체 없이 클래스 이름으로 직접 호출 가능합니다. 인스턴스 메서드는 객체 상태를 다루고, 정적 메서드는 주로 상태와 무관한 기능을 수행합니다.
정적 메서드는 클래스 자체에 속하며, 클래스의 모든 인스턴스가 공유하는 데이터를 처리하거나, 클래스와 관련된 유틸리티 기능을 제공하는 데 유용합니다.
정적 메서드를 정의하고 사용하는 방법에 대해 자세히 설명하겠습니다.
정적 메서드 정의하기 정적 메서드를 정의하려면 `static` 키워드를 사용하여 메서드를 선언합니다.
아래는 정적 메서드를 정의하는 기본적인 예제입니다.
```csharp public class MathUtility { // 정적 메서드 정의 public static int Add(int a, int b) { return a + b; } } ``` 위의 예제에서 `MathUtility`라는 클래스 안에 `Add`라는 정적 메서드를 정의했습니다.
이 메서드는 두 개의 정수를 매개변수로 받아 그 합을 반환합니다.
`static` 키워드를 사용하여 이 메서드가 정적임을 명시했습니다.
정적 메서드 호출하기 정적 메서드는 클래스 이름을 통해 직접 호출할 수 있습니다.
인스턴스를 생성할 필요가 없으므로, 다음과 같이 호출할 수 있습니다: ```csharp class Program { static void Main(string[] args) { // 정적 메서드 호출 int result = MathUtility.Add(5,
10); Console.WriteLine("The result is: " + result); } } ``` 위의 코드에서 `MathUtility.Add(5,
10)`을 통해 정적 메서드를 호출하고, 그 결과를 출력합니다.
정적 메서드의 특징 1. 인스턴스 필요 없음 : 정적 메서드는 클래스의 인스턴스를 생성하지 않고도 호출할 수 있습니다.
2. 클래스 수준에서 공유 : 정적 메서드는 클래스의 모든 인스턴스가 공유합니다.
즉, 인스턴스 변수에 접근할 수 없고, 정적 변수나 다른 정적 메서드에만 접근할 수 있습니다.
3. 상태 유지 불가 : 정적 메서드는 인스턴스 상태를 유지할 수 없으므로, 인스턴스 변수에 접근할 수 없습니다.
대신, 메서드 내에서 필요한 모든 데이터를 매개변수로 전달해야 합니다.
4. 유틸리티 메서드 : 정적 메서드는 일반적으로 유틸리티 기능을 제공하는 데 사용됩니다.
예를 들어, 수학 계산, 문자열 처리, 날짜 및 시간 관련 기능 등을 구현할 수 있습니다.
정적 메서드와 정적 클래스 정적 메서드는 정적 클래스 내에서도 정의할 수 있습니다.
정적 클래스는 인스턴스를 생성할 수 없는 클래스이며, 모든 멤버가 정적이어야 합니다.
정적 클래스를 정의하는 방법은 다음과 같습니다: ```csharp public static class StringHelper { public static string ToUpperCase(string input) { return input.ToUpper(); } } ``` 정적 클래스를 사용하면 관련된 정적 메서드를 그룹화하여 코드의 가독성을 높일 수 있습니다.
정적 클래스의 메서드는 다음과 같이 호출할 수 있습니다: ```csharp class Program { static void Main(string[] args) { string result = StringHelper.ToUpperCase("hello"); Console.WriteLine(result); // 출력: HELLO } } ``` 결론 C 에서 정적 메서드는 클래스의 인스턴스를 생성하지 않고도 호출할 수 있는 강력한 기능입니다.
정적 메서드를 사용하면 관련된 기능을 그룹화하고, 코드의 재사용성을 높이며, 유틸리티 메서드를 쉽게 정의할 수 있습니다.
이러한 메서드는 주로 클래스와 관련된 공통 기능을 제공하는 데 사용되며, 프로그램의 구조를 보다 명확하게 만드는 데 기여합니다.
작성자:
김하린 [비회원]
| 작성일자: 1년 전
2024-09-09 08:39:16
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.