>  기사  >  백엔드 개발  >  C# 널 입력 가능 문자열

C# 널 입력 가능 문자열

WBOY
WBOY원래의
2024-09-03 15:22:04634검색

C#에는 값 유형과 참조 유형 두 가지 유형의 변수가 있습니다. 값 유형 변수에는 null을 할당할 수 없지만 참조 유형 변수에는 null을 할당할 수 있습니다. 문자열은 참조 유형이므로 null일 수 있습니다. 이번 주제에서는 C# Nullable String에 대해 알아보겠습니다.

값 유형에 null을 할당하려면 Nullable 구조체. nullable 형식은 참조 형식이 아닌 값 형식에만 사용할 수 있습니다. 따라서 문자열에는 nullable을 사용할 수 없습니다. null 값을 보유하기 위해 참조 유형 대신 nullable을 저장할 수 있습니다.

설명이 포함된 구문

문자열 변수에 null을 할당하는 구문은 다음과 같습니다.

string str = null;

여기서 str은 string형 변수이고, 'null'은 null 값을 지정하는 데 사용되는 키워드입니다. 위 명령문에서는 참조 유형이고 null 값을 보유할 수 있으므로 문자열에 null을 직접 할당합니다.

Nullable struct는 값 유형에 null을 할당합니다. 구문은 다음과 같습니다.

Nullable<dataType> variableName = null;

Nullable 유형을 사용하는 또 다른 방법은 다음과 같습니다.

dataType? variableName = null;

dataType은 위 두 문에서 임의의 값 유형 데이터 유형이고, VariableName은 변수에 부여된 사용자 정의 이름입니다.

C#에서 Nullable 유형과 Null 문자열을 사용하는 방법은 무엇입니까?

C#의 Null 허용 유형은 int, float, bool 등과 같은 값 유형 변수에 null 값을 할당합니다. 왜냐하면 null 값을 저장할 수 없기 때문입니다. 반면에 null 값을 직접 저장할 수 있기 때문에 문자열이나 다른 참조 유형 변수에는 nullable을 사용할 수 없습니다.

Nullable 유형은 System.Nullable 구조체의 인스턴스일 뿐입니다. 여기서 T는 데이터 유형의 값 유형을 나타냅니다. 예를 들어, null 허용 유형 float에서는 'true', 'false' 및 'null'을 저장할 수 있습니다. 아래 설명을 통해 이를 이해할 수 있습니다.

//아래 명령문은 bool의 nullable에 null을 저장할 수 있기 때문에 유효합니다

Nullable<bool> boolVal = null;

//bool 유형의 변수에 null을 저장할 수 없기 때문에 아래 문은 유효하지 않습니다.

bool boolVal = null;

위 구문을 사용하면 'Nullable 값 유형이므로 null을 bool로 변환할 수 없습니다.'라는 오류가 발생합니다.

null 허용 유형을 생성하는 또 다른 방법은 아래와 같이 '?' 연산자를 사용하는 것입니다.

bool? boolVal = null;

이제 null 허용 유형의 값에 액세스하려면 GetValueOrDefault() 메서드를 사용해야 합니다. 이 방법을 사용하면 값이 null이 아닌 경우 원래 할당된 값을 얻을 수 있습니다. 반면에 값이 null이면 기본값인 0을 얻습니다.

이 외에도 Nullable.HasValue를 사용하여 개체에 값이 할당되었는지 여부를 확인할 수 있습니다. 객체에 값이 할당된 경우 객체에 값이 없으면 true를 반환합니다.

'var'과 함께 nullable 유형을 사용할 수 없으며 중첩된 nullable 유형을 가질 수도 없습니다. 컴파일 시간 오류가 발생합니다.

이제 C#의 null 문자열에 대해 이야기해 보겠습니다. C#에서는 문자열에 null을 직접 할당하고 'string'으로 문자열을 할당할 수 있습니다. 비어 있음' 읽기 전용 필드로, 문자열이 비어 있음을 나타냅니다.

null 문자열에서는 어떤 메서드도 호출할 수 없으며 null 문자열에서는 문자열 속성을 사용할 수 없습니다. 반면 빈 문자열에서는 동일한 작업을 수행할 수 있습니다. 예를 들어 문자열을 사용하여 빈 문자열의 길이를 확인하는 경우입니다. Length 속성을 사용하면 결과가 0으로 표시되는 반면, null 문자열의 길이를 확인하면 'System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.라는 런타임 예외가 발생합니다. null 문자열에 대해 문자열 메서드를 호출하려고 하면 동일한 예외가 발생합니다. 이는 null 문자열이 System의 인스턴스가 아니기 때문입니다. 끈. 다음 진술을 통해 이를 이해할 수 있습니다.

빈 문자열의 예:

string str = string.Empty;
int a = str.Length; //the result of this statement will be zero

널 문자열의 예:

string str = null;
int a = str.Length; //this statement will give NullReferenceException

C# Nullable 문자열의 예

아래에는 다양한 예가 나와 있습니다.

예시 #1

null 허용 유형을 생성하는 방법을 보여주는 예

코드:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main()
{
try
{
//defining nullable type for int
Nullable<int> intVal1 = null;
int result1;
Nullable<int> intVal2 = 53;
int result2;
//using GetValueOrDefault()
//to get value from nullable type
result1 = intVal1.GetValueOrDefault();
result2 = intVal2.GetValueOrDefault();
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch(Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}
}

출력:

C# 널 입력 가능 문자열

예시 #2

예를 들어 '?' 연산자를 사용하여 nullable 유형을 생성하고 HasValue를 사용하여 값이 포함되어 있는지 여부를 확인합니다.

코드:

using System;
public class Program
{
public static void Main()
{
try
{
//defining nullable type
//using '?' operator
int? intVal1 = null;
bool result1;
int? intVal2 = 53;
bool result2;
//using HasValue to check
// if the object has been assigned a value or not
result1 = intVal1.HasValue;
result2 = intVal2.HasValue;
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}

출력:

C# 널 입력 가능 문자열

예시 #3

IsNullOrEmpty() 메서드를 사용하여 문자열이 null인지, 비어 있는지, 값이 포함되어 있는지 확인하는 예

코드:

using System;
public class Program
{
public static void Main()
{
string str1 = null;
string str2 = string.Empty;
string str3 = "Learning C#";
Console.WriteLine("str1 is null or empty: {0}", string.IsNullOrEmpty(str1));
Console.WriteLine("str2 is null or empty: {0}", string.IsNullOrEmpty(str2));
Console.WriteLine("str3 is null or empty: {0}", string.IsNullOrEmpty(str3));
Console.ReadLine();
}
}

출력:

C# 널 입력 가능 문자열

결론

C#에서 int, float, bool, double 등과 같은 값 유형 변수는 null 값을 저장할 수 없지만 string과 같은 참조 유형 변수는 null 값을 저장할 수 있습니다. 값 유형 변수에 null 값을 저장하려면 Nullable 구조체.

위 내용은 C# 널 입력 가능 문자열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C# 메모리 누수다음 기사:C# 메모리 누수