id 활용에 대해서 궁금합니다.
class Player
{
static private int counter = 1;
private int id;
private bool isDespose = false;
public int GetCounter() { return counter; }
public int GetId() { return id; }
public Player()
{
id = counter;
counter++;
}
~Player()
{
if (!isDespose)
Dispose();
}
public void Dispose()
{
isDespose = true;
Console.WriteLine("{0}ID 삭제 Ok....", id);
GC.SuppressFinalize(this);
}
}
class TestSample
{
static void Main(string[] args)
{
Player player1 = new Player();
Console.WriteLine(player1.GetId());
Player player2 = new Player();
Console.WriteLine(player2.GetId());
Player player3 = new Player();
Console.WriteLine(player3.GetId());
Player player4 = new Player();
Console.WriteLine(player4.GetId());
player4.Dispose();
Player player5 = new Player();
Console.WriteLine(player5.GetId());
Console.WriteLine(player4.GetId());
for(int i=0; i<5;i++)
Console.WriteLine(i);
}
}
만일 객체를 제거하면 어떤가 궁금해서 소멸자로 지워보았습니다. 이럴 경우에 4번째를 제거해도 ID는 4로 남아있습니다.
그렇다고 당기면 다른 계정의 ID들이 바뀌니 안될것같은데 이런 제거하는 계정은 어떻게 처리를하나요~?
답변 1
0
ID를 굳이 회수할 필요 없습니다.
그냥 +1씩 계속 늘리면 그만이기 때문이죠.
[그럼 아이디가 언젠가 고갈되지 않을까?] 싶으시겠지만
64비트 정수로 표현할 수 있는 숫자의 범위는 상상을 초월하고
100년 게임을 운영해도 0.00000.....1%도 사용하지 못합니다.
그리고 오브젝트 구별을 위한 임시 ID가 아닌,
계정 별로 고정인 ID의 경우 서버나 클라에서 발급하는게 아니라
DB쪽에서 발급하는데 이 때도 비슷하게 숫자는 계속 증가를 (auto increment) 시킵니다.
Generic에 대한 질문 있습니다.
0
113
2
2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?
0
226
2
다형성 캐시 문제
0
136
3
.
0
77
1
프로퍼티 강의 질문 있습니다.
0
85
1
이후 커리 질문
0
91
1
static
0
101
2
강의에는 새로운 클래스 파일을 생성하면...
0
80
1
생성자의 이름 선언
0
68
1
9:03 Divide(10 , 3) 부분 질문입니다
0
93
1
깃허브 관련 질문 있습니다.
0
248
1
비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문
0
258
1
C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!
0
311
2
Activator 질문있습니다
0
343
1
이넘 타임 선언 질문
0
358
1
Sort 오름차순, 내림차순
0
332
1
질문 있습니다.
0
254
1
팩토리얼 문제
0
277
1
Sort함수 질문있습니다.
0
271
1
다형성 함수 질문 있습니다.
0
230
1
질문이 있습니다.
0
236
1
섹션2 연습문제 질문입니다.
0
222
1
안녕하세요~서버에 대해 질문이 있습니다.
1
288
1
텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ
0
401
1





