Sdílet prostřednictvím


Hodnoty Null (F#)

Toto téma popisuje použití hodnoty null v F#.

Hodnota Null

Hodnota null je obvykle nepoužívají v F# hodnot nebo proměnných.Null se však zobrazí jako abnormální hodnoty v určitých situacích.Pokud typ je definován v F#, null nejsou povoleny jako normální hodnotu Pokud AllowNullLiteral u atributu typu.Pokud je typ definován jiným.NET jazyk null je možná hodnota a když jsou spolupráce se takové typy, kód F# setkat hodnoty null.

Pro typ definované v F# a použity výhradně z F# je jediným způsobem, jak vytvořit hodnotu null pomocí knihovny F# přímo použít Unchecked.defaultof nebo Array.zeroCreate.Avšak pro typ F# používané jiných.NET jazyky nebo pokud se rozhraní API, která nejsou zapsána v F# například typu.NET Framework může dojít hodnoty null.

Můžete použít option F# když můžete použít odkaz na proměnnou s možnou hodnotou null v jiném typu.NET jazyk.Namísto null s F# option typu, použijte hodnotu možnosti None Pokud žádný objekt.Použít hodnotu možnosti Some(obj) s objektem obj po objektu.Další informace naleznete v tématu Možnosti (F#).

null Klíčové slovo je platný klíčové slovo v jazyce F# a máte při práci s jeho použití.NET Framework API nebo jiných rozhraní API, která jsou zapsána v jiném.NET jazyk.Jsou dvě situace, ve kterých může být nutné hodnotu null při volání.NET API a předáte prázdnou hodnotu jako argument a interpretují návratové hodnoty nebo výstupní parametr z.Volání metody NET.

K předání hodnoty null.NETTO metodu použít pouze null klíčové slovo v volající kód.Následující příklad kódu ukazuje to.

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

Interpretovat hodnotu null, získané z.NET metoda, pomocí porovnávání vzorků, pokud je to možné.Následující příklad kódu ukazuje, jak použít masku interpretovat hodnotu null, který se vrátí z ReadLine při pokusu o čtení za koncem vstupní proud.

// 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 ()

Hodnoty Null pro typy F# lze generovat také jinými způsoby, například při použití Array.zeroCreate, vyžaduje Unchecked.defaultof.Musíte být opatrní kódem zachovat hodnoty null zapouzdřený.V knihovně je určena pouze pro F# není nutné kontrolovat hodnoty null v každé funkce.Pokud vytváříte knihovnu pro součinnost s ostatními.NET jazyků bude pravděpodobně nutné přidat kontroly pro null vstupní parametry a vyvoláním ArgumentNullException, stejně jako v C# nebo Visual Basic kód.

Následující kód můžete zkontrolovat, zda je libovolný hodnotu null.

match box value with
| null -> printf "The value is null."
| _ -> printf "The value is not null."

Viz také

Referenční dokumentace

Výrazy shody (F#)

Další zdroje

Hodnoty (F#)