VB.NET의 정수에 아무것도 할당할 수 없는 이유는 무엇입니까?
할당할 수 있는 이유Nothing
VB.NET의 값 형식으로:
Dim x as Integer = Nothing
하지만 저는 당신을 위해 할당할 수 없습니다.null
C#:
int x = null;
할당할 때Nothing
VB의 값 유형으로 변환합니다.Net이 기본값으로 해당 유형을 인스턴스화합니다.따라서 이 경우에는 null 정수가 아니라 기본값 0을 유지하는 정수를 만듭니다.
동등한 C# 코드는 다음과 같습니다.
int x;
x = default(int);
참조 유형의 경우에도 동일한 내용이 유지됩니다.
Dim y As Object
y = Nothing
그 VB.C#에 직접 매핑된 경우 Net 코드는 다음과 같습니다.
object y;
y = default(object);
에 대한 기본값은 그저 좋은 것입니다.object
(또는 다른 참조 유형).넷이즈null
그래서 우리는 VB를 봅니다.넷즈Nothing
C#과 직접 유사하지 않습니다.null
적어도 값 형식과 함께 사용되는 경우.
언어 사양의 흥미로운 예: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=01eee123-f68c-4227-9274-97a13d7cb433&displaylang=en
7.1.1 Nullable Value Types 값 유형의 경우, ? 수식어를 해당 유형의 Nullable 버전을 나타내는 형식 이름에 추가할 수 있습니다.null 가능한 값 유형에는 null이 아닌 버전의 유형과 동일한 값과 null 값이 포함될 수 있습니다.따라서 null 가능한 값 유형의 경우 Nothing을 유형의 변수에 할당하면 변수 값이 값 유형의 0이 아닌 null 값으로 설정됩니다.예:
Dim x As Integer = Nothing
Dim y As Integer? = Nothing
' Prints zero
Console.WriteLine(x)
' Prints nothing (because the value of y is the null value)
Console.WriteLine(y)
대해서Nothing
VB.NET 사양(v.10):
특별한 리터럴은 없습니다. 형식이 없으며 형식 매개 변수를 포함하여 형식 시스템의 모든 형식으로 변환할 수 있습니다.특정 유형으로 변환할 경우 해당 유형의 기본값과 동일합니다.
C# 사양(v4)으로부터
null-literal은 암시적으로 참조 유형 또는 null 가능 유형으로 변환할 수 있습니다.
따라서 C# null은 암묵적으로 값 형식으로 변환할 수 없지만 VB.NET Nothing은 변환할 수 없습니다.
단, 설정x = Nothing
에 해당하는 첫 번째 보기에서 명확하지 않기 때문에 혼란스럽습니다.x = 0
.
특히 그럴 때는Nothing
유효하지 않은 값이 될 것으로 예상됩니다.0
유효한 경우 이 할당은 VB.NET 코드에서 오해나 암시적 버그를 가져올 수 있습니다.
다음은 VB.NET 및 Nothing vs.에 대한 흥미로운 기사입니다.특수합니다. 약간의 발췌:
...값 유형. 없음 또는 Null과 비교할 수 없습니다.값 유형은 정수 및 바이트와 같은 유형입니다.Visual Basic Language Reference에서 다음을 수행합니다.
값 유형은 값 없음을 유지할 수 없으며 값에 아무것도 할당하지 않으면 기본값으로 돌아갑니다.식에 값 유형을 입력하면 IsNothing은 항상 False를 반환합니다.
언급URL : https://stackoverflow.com/questions/2776902/why-can-you-assign-nothing-to-an-integer-in-vb-net
'programing' 카테고리의 다른 글
jQuery를 사용하여 요소 유형 찾기 (0) | 2023.05.19 |
---|---|
bash에 공백 없이 16진수 문자만 포함된 파일의 16진수 덤프를 만드는 방법은 무엇입니까? (0) | 2023.05.19 |
C#에서 어레이를 비교하는 가장 쉬운 방법 (0) | 2023.05.19 |
SQLite 데이터베이스에 한 번에 여러 행을 삽입할 수 있습니까? (0) | 2023.05.19 |
Python: 동일한 Excel 파일에 이미지 및 데이터 프레임 쓰기 (0) | 2023.05.19 |