2012-11-05 12 views
14

kiedy musimy użyć typu nullable w C# .net? czy ktokolwiek mógłby wyjaśnić na przykładzie.Co to jest typ zerowy w języku C#?

+4

http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx –

+0

http://www.c-sharpcorner.com/UploadFile/PashuSX/NullableTypes04282006114548AM/NullableTypes. aspx –

Odpowiedz

0

Typ Nullable to nowa koncepcja wprowadzona w C# 2.0, która pozwala użytkownikowi na przypisanie wartości pustej prymitywnym typom danych języka C#. Ważne, by nie tutaj, jest typ Nullable jest typu Structure.

blogpost: Nullable type -- Why we need Nullable types in programming language ?

+0

Nieco niedokładny, powiedziałbym 'Nullable ' jest typem wrappera, który dopuszcza semantykę wartości pustej (lub "opcjonalnej") dla typów wartości. Nie jest to tylko dla prymatów, a przypisanie 'null' do typu zerowego jest naprawdę syntaktycznym cukrem. Null '' Nullable 'nie jest prawdziwie' null' w sensie odniesienia. –

+1

Napraw swoją gramatykę w Blogspot przed połączeniem jej z SO. Jeśli nikt nie rozumie twoich wyjaśnień z powodu słabej gramatyki, o co chodzi? – ragingasiancoder

1

z: http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx dopuszczające wartość null typy wystąpień System.Nullable struktury. Typ zerowalny może reprezentować normalny zakres wartości dla jego bazowego typu wartości plus dodatkową wartość pustą. Na przykład wartości Nullable <Int32>, wymawiane jako "Nullable of Int32", można przypisać dowolną wartość z -2147483648 do 2147483647 lub można jej przypisać wartość pustą. Nullable <bool> można przypisać wartości prawda lub fałsz lub null

class NullableExample 
{ 
    static void Main() 
    { 
     int? num = null; 
     if (num.HasValue == true) 
     { 
      System.Console.WriteLine("num = " + num.Value); 
     } 
     else 
     { 
      System.Console.WriteLine("num = Null"); 
     } 

     //y is set to zero 
     int y = num.GetValueOrDefault(); 

     // num.Value throws an InvalidOperationException if num.HasValue is false 
     try 
     { 
      y = num.Value; 
     } 
     catch (System.InvalidOperationException e) 
     { 
      System.Console.WriteLine(e.Message); 
     } 
    } 
} 
29

typy dopuszczające wartość null (When to use nullable types) są typy wartości, które można podjąć, null jako wartość. Jego domyślną wartością jest null, co oznacza, że ​​nie przypisałeś jej wartości. Przykład typów wartości są int, float, double, DateTime, itd. Te typy mają te domyślne

int x = 0; 
DateTime d = DateTime.MinValue; 
float y = 0; 

Dla pustych alternatyw defualt któregokolwiek z powyższych jest null

int? x = null; //no value 
DateTime? d = null; //no value 

To czyni je zachowywać się jak typy odniesienia np obiekt, string

string s = null; 
object o = null; 

Są one bardzo przydatne, gdy do czynienia z wartościami z bazy danych, gdy wartości zwracanej z tabeli jest NULL. Wyobraźmy sobie wartość całkowitą w tabeli bazy danych, która może mieć wartość NULL, taka wartość może być reprezentowana tylko przez 0, jeśli zmienna C# nie jest zerowa - zwykła liczba całkowita.

Wyobraź sobie także kolumnę EndDate, której wartość nie zostanie określona do czasu rzeczywistego w przyszłości. Które mogą być ustawione na NULL w DB, ale musisz się zerowalne typu do sklepu, który w C#

DateTime StartDate = DateTime.Today; 
DateTime EndDate? = null; //we don't know yet 
2

Kiedy musimy użyć zerowalne typu w C# .NET?

Wyobraźmy sobie nie jest liczbą całkowitą, która reprezentuje zmienną id szczególny id.

można przechowywać 1, 44 lub cokolwiek else.But co jeśli nie znasz id.You cant tylko przechowywać -1 lub 0 .you można myśleć przypisać nullnull ale normalnie nie mogą być przypisane do typów wartości .

int id=null;//error 

Nullable type Umożliwia to.


Typy wartości jak int,double,char..nie może być reprezentowana jako NULL wartości.

Do reprezentowania null w rodzaju wartości należy użyć nullable type ..

To jest oznaczona jako typ wartości następnie ?

int? id=null;

który transalted do

Nullable<int> id=new Nullable<int>();

Ustawienie domyślne wartość tego typu zerowalnego to null.

0

Założono w aplikacji, że masz obowiązek uchwycić datę urodzenia klienta, która nie jest obowiązkowym polem. Możesz zadeklarować właściwość DateOfBirth jako typ System.DateTime w klasie Klient. Ponieważ DateTime jest typem wartości, nie może akceptować wartości null, więc będzie mieć pewną wartość domyślną.

Tak więc, gdy klient nie wprowadził wyraźnej wartości w formancie Data urodzenia, przed zapisaniem go w DB należy zachować logikę, aby uznać wartość domyślną za NULL. W DB można zapisać pola NULL do pola DateTime.

Aby uniknąć niechcianych kroków w celu interpretacji wartości w interfejsie użytkownika i warstwie DA, można użyć typów zerowalnych w języku C#, dzięki czemu kod stanie się bardziej czytelny.

Aby przeczytać o więcej informacji na temat typów zerowalnych, zobacz Nullable types in C# with an example.