-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
해결됨
id 활용에 대해서 궁금합니다.
21.11.17 16:19 작성 조회수 148
0
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들이 바뀌니 안될것같은데 이런 제거하는 계정은 어떻게 처리를하나요~?
답변을 작성해보세요.
0
Rookiss
지식공유자2021.11.17
ID를 굳이 회수할 필요 없습니다.
그냥 +1씩 계속 늘리면 그만이기 때문이죠.
[그럼 아이디가 언젠가 고갈되지 않을까?] 싶으시겠지만
64비트 정수로 표현할 수 있는 숫자의 범위는 상상을 초월하고
100년 게임을 운영해도 0.00000.....1%도 사용하지 못합니다.
그리고 오브젝트 구별을 위한 임시 ID가 아닌,
계정 별로 고정인 ID의 경우 서버나 클라에서 발급하는게 아니라
DB쪽에서 발급하는데 이 때도 비슷하게 숫자는 계속 증가를 (auto increment) 시킵니다.
답변 1