Null 값
이 항목에서는 F#에서 null 값을 사용하는 방법을 설명합니다.
Null 값
Null 값은 일반적으로 F#에서 값 또는 변수에 사용되지 않습니다. 그러나 null은 특정 상황에서 비정상적인 값으로 나타납니다. 형식이 F#에 정의된 경우 AllowNullLiteral 특성이 형식에 적용되지 않는 한 null은 일반 값으로 허용되지 않습니다. 형식이 다른 .NET 언어로 정의된 경우 null은 가능한 값이며 이러한 형식과 상호 운용하는 경우 F# 코드에 null 값이 발생할 수 있습니다.
F#에서 정의되고 F#에서 엄격하게 사용되는 형식의 경우 F# 라이브러리를 사용하여 null 값을 직접 만드는 유일한 방법은 Un검사ed.defaultof 또는 Array.zeroCreate를 사용하는 것입니다. 그러나 다른 .NET 언어에서 사용되는 F# 형식의 경우 또는 .NET Framework와 같이 F#으로 작성되지 않은 API와 함께 해당 형식을 사용하는 경우 null 값이 발생할 수 있습니다.
다른 .NET 언어에서 가능한 null 값이 있는 참조 변수를 사용할 수 있는 경우 F#에서 형식을 사용할 option
수 있습니다. F# option
형식을 사용하여 null 대신 개체가 없는 경우 옵션 값을 None
사용합니다. 개체가 있는 경우 개체 obj
와 함께 옵션 값을 Some(obj)
사용합니다. 자세한 내용은 옵션을 참조하세요. 값이 옵션에 포함된 경우 x
Some x
값은 계속 압축 null
할 수 있습니다null
. 이 때문에 값이 .일 때 사용하는 None
것이 중요합니다 null
.
null
키워드(keyword) F#의 유효한 키워드(keyword) .NET Framework API 또는 다른 .NET 언어로 작성된 다른 API로 작업할 때 사용해야 합니다. null 값이 필요할 수 있는 두 가지 상황은 .NET API를 호출하고 null 값을 인수로 전달하는 경우와 .NET 메서드 호출에서 반환 값 또는 출력 매개 변수를 해석할 때입니다.
null 값을 .NET 메서드에 전달하려면 호출 코드에서 null
키워드(keyword) 사용합니다. 다음 코드 예제에서는 그 구체적인 방법을 보여 줍니다.
open System
// Pass a null value to a .NET method.
let ParseDateTime (str: string) =
let (success, res) =
DateTime.TryParse(str, null, System.Globalization.DateTimeStyles.AssumeUniversal)
if success then Some(res) else None
.NET 메서드에서 가져온 null 값을 해석하려면 가능한 경우 패턴 일치를 사용합니다. 다음 코드 예제에서는 패턴 일치를 사용하여 입력 스트림의 끝을 지나서 읽으려고 할 때 반환 ReadLine
되는 null 값을 해석하는 방법을 보여 줍니다.
// Open a file and create a stream reader.
let fileStream1 =
try
System.IO.File.OpenRead("TextFile1.txt")
with :? System.IO.FileNotFoundException ->
printfn "Error: TextFile1.txt not found."
exit (1)
let streamReader = new System.IO.StreamReader(fileStream1)
// ProcessNextLine returns false when there is no more input;
// it returns true when there is more input.
let ProcessNextLine nextLine =
match nextLine with
| null -> false
| inputString ->
match ParseDateTime inputString with
| Some(date) -> printfn "%s" (date.ToLocalTime().ToString())
| None -> printfn "Failed to parse the input."
true
// A null value returned from .NET method ReadLine when there is
// no more input.
while ProcessNextLine(streamReader.ReadLine()) do
()
F# 형식에 대한 Null 값은 사용하는 Array.zeroCreate
경우와 같이 호출 Unchecked.defaultof
하는 다른 방법으로 생성될 수도 있습니다. null 값을 캡슐화 상태로 유지하려면 이러한 코드에 주의해야 합니다. F#용 라이브러리에서는 모든 함수에서 null 값에 대해 검사 필요가 없습니다. 다른 .NET 언어와의 상호 운용을 위해 라이브러리를 작성하는 경우 C# 또는 Visual Basic 코드와 마찬가지로 null 입력 매개 변수에 대한 검사 추가하고 throwArgumentNullException
해야 할 수 있습니다.
다음 코드를 사용하여 임의의 값이 null인지 검사 수 있습니다.
match box value with
| null -> printf "The value is null."
| _ -> printf "The value is not null."
참고 항목
.NET