GUID가 모두 0입니까?
저는 가이드가 있는 물체를 앞뒤로 보내는 WCF 서비스를 테스트하고 있습니다.웹 앱 테스트 코드에서 다음 작업을 수행하고 있습니다.
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = new Guid()
});
어떤 이유로 새 Guid()를 호출하면 다음과 같이 모두 0인 Guid가 생성됩니다.
00000000-0000-0000-0000-000000000000
무엇이 원인일까요?
기본 생성자를 호출하는 대신 정적 메서드를 사용합니다.
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = Guid.NewGuid()
});
이를 통해 얻을 수 있는 교훈:
GUID는 참조 유형이 아닌 값 유형입니다.
기본 생성자 호출new S()
값 유형에 관계없이 항상 해당 값 유형의 all-zero 형식을 반환합니다.와 논리적으로 같습니다.default(S)
.
대신 사용해 보십시오.
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = new Guid.NewGuid()
});
그러면 '실제' GUID 값이 생성됩니다.참조 유형을 새로 만들면 기본값(이 경우 Guid의 경우 모두 0)이 제공됩니다.
새 GUID를 작성하면 GUID의 기본값인 모든 0으로 초기화됩니다.이는 기본적으로 "새" int(값 유형이지만 이 작업을 수행할 수 있음)를 생성하는 것과 동일합니다.
Guid g1; // g1 is 00000000-0000-0000-0000-000000000000
Guid g2 = new Guid(); // g2 is 00000000-0000-0000-0000-000000000000
Guid g3 = default(Guid); // g3 is 00000000-0000-0000-0000-000000000000
Guid g4 = Guid.NewGuid(); // g4 is not all zeroes
이것을 int를 사용하여 동일한 작업을 수행하는 것과 비교해 보십시오.
int i1; // i1 is 0
int i2 = new int(); // i2 is 0
int i3 = default(int); // i3 is 0
시도:
Guid foo = Guid.NewGuid();
이게 몇 번이나 걸렸는지 말씀드릴 수 없습니다.
Guid myGuid = Guid.NewGuid();
완전하다는 정신으로, 당신에게 사용하도록 지시하는 답입니다.Guid.NewGuid()
맞습니다.
후속 편집을 처리할 때는 다음에 대한 코드를 게시해야 합니다.RequestObject
수업입니다. 당신의 guid 재산이 표시되어 있지 않은 것 같습니다.DataMember
따라서 와이어를 통해 직렬화되지 않습니다.부터default(Guid)
와 동일합니다.new Guid()
(즉, 모두)0
's)', 이것은 당신이 보고 있는 행동을 설명해 줄 것입니다.
언급URL : https://stackoverflow.com/questions/7972150/guid-is-all-0s-zeros
'prosource' 카테고리의 다른 글
SQL Server에서 현재 날짜를 가져오시겠습니까? (0) | 2023.05.18 |
---|---|
MongoError: 사용자는 작업을 수행할 수 없습니다. (0) | 2023.05.18 |
Xcode에서 Firebase Analytics 설정 (0) | 2023.05.18 |
예외를 잡았습니다!!자 이제는 뭐죠? (0) | 2023.05.18 |
루비에서 구분된 문자열을 분할하여 배열로 변환하는 방법은 무엇입니까? (0) | 2023.05.18 |