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."