다음을 통해 공유


null 허용 연산자(F#)

Nullable 연산자 한쪽 또는 양쪽에 산술 nullable 형식과 함께 사용할 이진 산술 또는 비교 연산자입니다. Nullable 형식은 데이터 소스에서 실제 값 대신 null 값을 허용 하는 데이터베이스 등에서 자주 사용할 때 발생 합니다. Null이 허용 되는 연산자는 쿼리 식에 자주 사용 됩니다. Nullable 연산자에 산술 및 비교에 대 한 nullable 형식 사이 변환 하려면 변환 연산자를 사용할 수 있습니다. 또한 null 허용 버전에 특정 쿼리 연산자입니다.

Nullable 연산자 표

다음 F# 언어에서 지원 되는 nullable 연산자입니다.

왼쪽에 null을 허용 하지

오른쪽에 null을 허용 하지

양쪽 모두 null을 허용 하지

? > =

> =?

? > =?

? >

>?

? >?

? < =

< =?

? < =?

? <

<?

? <?

?=

=?

?=?

? < >

< >?

? < >?

?+

+?

?+?

?-

-?

?-?

?*

*?

?*?

?/

/?

?/?

? %

%?

? %?

설명

연산자는 nullable에 포함 되어 있는 NullableOperators 네임 스페이스에 모듈 Microsoft.FSharp.Linq. Null 허용 데이터 형식인 Nullable.

쿼리 식의 null 허용 형식 값 대신 null을 허용 하는 데이터 소스에서 데이터를 선택할 때 발생 합니다. SQL Server 데이터베이스의 테이블에 각 데이터 열의 null 값 허용 여부를 지정 하는 특성이 있습니다. Null 값이 허용 되 면 데이터베이스에서 반환 되는 데이터에서 기본 데이터 형식으로 나타낼 수 없는 null 값을 포함할 수 있습니다 int, float등. 따라서 데이터가로 반환 되는 System.Nullable<int> 대신 int, 및 System.Nullable<float> 대신 float. 실제 값을 구할 수 있습니다는 Nullable 개체를 사용 하 여는 Value 속성 및이 경우 확인할 수 있습니다는 Nullable 개체를 호출 하 여 값이 있는 HasValue 메서드. 다른 유용한 방법입니다 있는 GetValueOrDefault 값 또는 해당 형식의 기본값을 얻을 수 있도록 하는 메서드. 예: 0, "0" 값을 기본값은 0.0, 또는 false.

Nullable 형식은 같은 일반적인 변환 연산자를 사용 하 여 nullable이 아닌 기본 형식으로 변환 될 수 있습니다 int 또는 float. Nullable 형식을 nullable 형식에 대해 변환 연산자를 사용 하 여 다른 nullable 형식으로 변환할 수 있습니다. 표준 hal에서 이름이 같은 적절 한 변환 연산자가 있지만 별도 모듈에는 null 허용 여부가 모듈에는 Microsoft.FSharp.Linq 네임 스페이스입니다. 일반적으로 쿼리 식을 사용 하 여 작업 하는 경우이 네임 스페이스를 열입니다. 이 경우 접두사를 추가 하 여 null을 허용 하는 변환 연산자를 사용할 수 있습니다 Nullable. 다음 코드와 같이 적절 한 변환 연산자를 합니다.

open Microsoft.Fsharp.Linq
let nullableInt = new System.Nullable<int>(10)
// Use the Nullable.float conversion operator to convert from one nullable type to another nullable type.
let nullableFloat = Nullable.float nullableInt
// Use the regular non-nullable float operator to convert to a non-nullable float.
printfn "%f" (float nullableFloat)

출력은 10.000000입니다.

같은 연산자의 null 허용 데이터 필드를 쿼리 sumByNullable를 쿼리 식에도 존재 합니다. Null 허용 데이터 값을 사용 하는 경우 적절 한 쿼리 연산자의 null 허용 버전을 사용 해야 쿼리 연산자 nullable이 아닌 형식에 대 한 호환 형식을 nullable 형식으로 수 없습니다. 자세한 내용은 쿼리 식(F#)를 참조하십시오.

다음 예제에서는 F# 쿼리 식에서 nullable 연산자의 사용을 보여 줍니다. 첫 번째 쿼리 없이 null을 허용 하는 연산자는 쿼리를 작성 하는 것을 보여 줍니다. 두 번째 쿼리에서 null을 허용 하는 연산자를 사용 하는 동일한 쿼리를 보여 줍니다. 이 예제 코드를 사용 하도록 데이터베이스를 설정 하는 방법을 포함 하 여 전체 컨텍스트를 참조 하십시오. 연습: 형식 공급자를 사용하여 SQL 데이터베이스에 액세스(F#).

open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq

[<Generate>]
type dbSchema = SqlDataConnection<"Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;">
let db = dbSchema.GetDataContext()

query {
        for row in db.Table2 do
        where (row.TestData1.HasValue && row.TestData1.Value > 2)
        select row
      }
|> Seq.iter (fun row -> printfn "%d %s" row.TestData1.Value row.Name)

query {
        for row in db.Table2 do
        // Use a nullable operator ?>
        where (row.TestData1 ?> 2)
        select row
      }
|> Seq.iter (fun row -> printfn "%d %s" (row.TestData1.GetValueOrDefault()) row.Name)

참고 항목

참조

Nullable