2013-01-11 18 views
6

Tôi có hai câu hỏi:DateTime trong VB.NET và C#

  1. DateDateTime: Họ có khác nhau hay giống nhau trong VB?

  2. DateTime có thể được chỉ định Không có gì trong VB, khi không thể gán giá trị rỗng trong C#. Là một cấu trúc, nó không thể rỗng. Vậy tại sao nó được cho phép trong VB?

--- VB.NET -----

Module Module1 

    Sub Main() 
     Dim d As Date = Nothing 
     Dim dt As DateTime = Nothing 

     d = CType(MyDate, DateTime) 


    End Sub 

    Public ReadOnly Property MyDate As DateTime 
     Get 
      Return Nothing 
     End Get 
    End Property 

End Module 

--- C# .NET -----

class Program 
    { 
     static void Main(string[] args) 
     { 
      DateTime dt = null;//compile time error    
     } 
    } 
+0

Xem http://stackoverflow.com/questions/798121/date-vs-datetime – Steve

+1

@musefan: ok, nhưng trong VB.NET bạn có thể viết 'Dim dt As Date? = Nothing'. Vậy sự khác biệt là gì? –

+0

@TimSchmelter: Tên rất phù hợp 'Dim' là sự khác biệt. Tôi biết chúng tôi cool kids có bao giờ lười biếng 'var', nhưng hận thù mù quáng của tôi cho VB không cần phải được sao lưu bởi lý do, tôi chỉ cần đảm bảo tôi làm một phần của tôi và làm cho tiếng ồn chính xác khi bao giờ cơ hội phát sinh. .. #CutForVB – musefan

Trả lời

13

Nothing trong VB.NET không phải là giống như null trong C#. Nó cũng có chức năng của default trong C# và đó là những gì sẽ xảy ra khi bạn sử dụng nó trên một cấu trúc như System.DateTime.

Vì vậy, cả hai, DateDateTime tham khảo với cùng struct System.DateTime

Dim dt As Date = Nothing 

thực sự là giống như

Dim dt = Date.MinValue 

hoặc (trong C#)

DateTime dt = default(DateTime); 
+1

Vâng, khả năng tương thích ngược là một bitch ... :-( –

+0

tôi luôn luôn thấy nó buồn cười khi mọi người nói 'Tại sao arent những ngôn ngữ này giống nhau!' Ý tưởng ofc là nếu họ giống hệt nhau duy nhất sẽ kết thúc được những từ bạn sử dụng để làm điều đó ... – RhysW

+1

+1 không biết rằng Không có gì không giống như null –

3

Trong C# Bạn có thể sử dụng default từ khóa

DateTime dt = default(DateTime); 

DateDateTime giống nhau trong VB.NET. Date chỉ alias của DateTime

3

Trong vb.net Date là chỉ đơn giản là một alias cho DateTime.

Một số bí danh tồn tại trong VB có mục đích kế thừa để trợ giúp chuyển đổi từ các ứng dụng vb6.