So sánh trong vb.net

Access cho Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Xem thêm...Ít hơn

Trả về một biến _ thể [số _nguyên] cho biết kết quả của một biểu thức chuỗi.

Cú pháp

Strcomp [ string1, string2 [, so sánh ] ]

Cú pháp hàm Strcomp có các đối số sau đây:

Đối số

Mô tả

chuỗi_1

Bắt buộc. Bất kỳ biểu thức chuỗi hợp lệ nào.

chuỗi_2

Bắt buộc. Bất kỳ biểu thức chuỗi hợp lệ nào.

so_sánh

Tùy chọn. Xác định kiểu so sánh chuỗi. Nếu so sánhtham đối là null, lỗi xảy ra. Nếu so sánh được bỏ qua, tùy chọn so sánh thiết đặt sẽ xác định kiểu so sánh.

Thiết đặt

Các thiết đặt so sánh đối số là:

Hằng số

Giá trị

Mô tả

vbBinaryCompare

0

Thực hiện so sánh nhị phân.

so sánh vbtext

1

Thực hiện so sánh văn bản.

vbDatabaseCompare

2

chỉMicrosoft Office Access 2007. Thực hiện so sánh dựa trên thông tin trong cơ sở dữ liệu của bạn.

Giá trị trả về

Hàm Strcomp có các giá trị trả về sau:

If

Trả về strcomp

string1 nhỏ hơn string2

-1

string1 bằng string2

0

string1 lớn hơn string2

1

string1 hoặc string2null

Null

Biểu thức

Kết quả

CHỌN ProductSales. ProductID, StrComp [ProductID, "PRO_XYZ10"] như ComparisonResult từ ProductSales;

Trả về các giá trị từ trường "ProductID", so sánh các giá trị trong "ProductID" với "PRO_XYZ1" và trả về kết quả trong sánh theo cột. "ProductID" bằng "PRO_XYZ10", hàm StrComp sẽ trả về 0. Nếu "ProductID" nhỏ hơn "PRO_XYZ10", hàm StrComp sẽ trả về-1. Nếu "ProductID" lớn hơn "PRO_XYZ10", hàm StrComp sẽ trả về 1. Nếu một trong hai "ProductID" hoặc "PRO_XYZ10" là NULL, hàm StrComp sẽ trả về NULL.

Lưu ý: Các ví dụ sau thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications [VBA].

Ví dụ này sử dụng hàm Strcomp để trả về kết quả so sánh chuỗi. Nếu đối số thứ ba là 1, thì một so sánh văn bản được thực hiện; Nếu đối số thứ ba là 0 hoặc bỏ qua, một so sánh nhị phân được thực hiện.

Dim MyStr1, MyStr2, MyCompMyStr1 = "ABCD": MyStr2 = "abcd" ' Define variables.MyComp = StrComp[MyStr1, MyStr2, 1] ' Returns 0.MyComp = StrComp[MyStr1, MyStr2, 0] ' Returns -1.MyComp = StrComp[MyStr2, MyStr1] ' Returns 1.

Sự khác biệt giữa Visual Basic và Visual Basic.Net [VB6 và VB.net] - Công Nghệ

NộI Dung:

Visual Basic vs Visual Basic.Net [VB6 vs VB.net]
 

VB hay còn gọi là Visual Basic là một ngôn ngữ lập trình được phát hành vào khoảng năm 1991 dưới dạng một sản phẩm của Microsoft. Nó là ngôn ngữ lập trình hướng sự kiện thế hệ thứ ba, hỗ trợ Phát triển ứng dụng nhanh [còn gọi là RAD]. Visual Basic 6, hay VB6, được phát hành vào năm 1998, và đây là bản phát hành ổn định của VB.VB6 cung cấp IDE để phát triển phần mềm và thiết kế giao diện người dùng. Ngôn ngữ này dựa trên một mô hình lập trình được gọi là Mô hình Đối tượng Thành phần. VB6 là một ngôn ngữ lập trình đơn giản, không chỉ giúp người mới bắt đầu học các khái niệm lập trình một cách nhanh chóng mà còn sử dụng dễ dàng trong các ứng dụng phần mềm lớn. VB6 là một ngôn ngữ lập trình thủ tục. Lập trình viên có thể thiết kế GUI cho một ứng dụng và áp dụng các chức năng trực tiếp cho các điều khiển được thêm vào GUI. Ví dụ: nếu có một nút trong GUI, lập trình viên phải viết chức năng cho nút đó trong sự kiện nhấp vào nút [và do đó, thuật ngữ lập trình hướng sự kiện].


VB.net

VB.net cũng là một sản phẩm của Microsoft được phát hành vào năm 2008. Đây là sản phẩm kế thừa của VB6. Sự khác biệt chính giữa VB6 và VB.net là khái niệm 'Lập trình hướng đối tượng' được giới thiệu trong VB.net. Mỗi và mọi thành phần tương tác với một hệ thống như vậy được coi là một đối tượng. Các đối tượng được tạo thông qua các lớp tương ứng. Các lớp có thể được khai báo bởi lập trình viên hoặc ngôn ngữ cũng bao gồm các thư viện lớp khác nhau của riêng nó. Đó là những khối xây dựng của ngôn ngữ VB.net. Một chương trình ứng dụng được viết bằng ngôn ngữ VB.net chạy trên khuôn khổ .NET của Microsoft. Lập trình viên hoặc nhà phát triển nên viết các lớp khác với các lớp được xây dựng sẵn, để thực hiện bất kỳ yêu cầu nào của hệ thống. Sau phiên bản chính đầu tiên VB.net 2005, bây giờ nó đã phát hành phiên bản 2010, hỗ trợ .NET framework 4.0.

Visual Basic [VB6]

Không giống như VB6, VB.net hỗ trợ phát triển chia sẻ. Đối với bất kỳ ai đã viết chương trình bằng VB6, sẽ dễ dàng thích nghi với lập trình VB.net. Ngoài ra, các chương trình được viết bằng VB6 có thể được chuyển đổi sang phiên bản .net dễ dàng bằng cách sử dụng công cụ di chuyển ngôn ngữ VB.net. Gần đây, việc sử dụng VB.net để phát triển web cũng tăng lên do sự hỗ trợ của nó cho phát triển ứng dụng web.


Sự khác biệt giữa VB6 và VB.net là gì?

• VB6 là một ngôn ngữ lập trình thủ tục.

• VB.net là một ngôn ngữ lập trình hướng đối tượng.

• VB6 sử dụng Mô hình Đối tượng Thành phần.

• VB6 là một ngôn ngữ lập trình đơn giản.

• VB.net có nhiều thư viện lớp được xây dựng sẵn, là các khối xây dựng của ngôn ngữ.

• VB.net hỗ trợ phát triển chia sẻ.

• VB.net hỗ trợ phát triển ứng dụng web.

So sánh ba toán tử đúc: DirectCast, CType, TryCast

Truyền là quá trình chuyển đổi một kiểu dữ liệu sang kiểu dữ liệu khác, ví dụ, từ kiểu Integer thành kiểu String. Một số hoạt động trong VB.NET yêu cầu các kiểu dữ liệu cụ thể để hoạt động. Truyền tạo ra loại bạn cần. Bài viết đầu tiên trong loạt bài gồm hai phần này, Chuyển đổi kiểu đúc và kiểu dữ liệu trong VB.NET, giới thiệu cách truyền. Bài viết này mô tả ba toán tử mà bạn có thể sử dụng để đúc trong VB.NET - DirectCast, CType và TryCast - và so sánh hiệu suất của chúng.

Hiệu suất là một trong những sự khác biệt lớn giữa ba nhà khai thác đúc theo Microsoft và các bài viết khác. Ví dụ, Microsoft thường cẩn thận cảnh báo rằng, "DirectCast ... có thể cung cấp hiệu suất tốt hơn một chút so với CType khi chuyển đổi sang và từ kiểu dữ liệu Object ." [Nhấn mạnh thêm.]

Tôi quyết định viết một số mã để kiểm tra.

Nhưng trước tiên hãy thận trọng. Dan Appleman, một trong những người sáng lập nhà xuất bản sách kỹ thuật Apress và một guru kỹ thuật đáng tin cậy, đã từng nói với tôi rằng hiệu suất điểm chuẩn khó hơn nhiều so với hầu hết mọi người nhận ra. Có những yếu tố như hiệu suất máy, các quá trình khác có thể chạy song song, tối ưu hóa như bộ nhớ đệm hoặc tối ưu hóa trình biên dịch và các lỗi trong giả định của bạn về mã thực sự đang thực hiện. Trong các tiêu chuẩn này, tôi đã cố gắng loại bỏ các lỗi so sánh "quả táo và cam" và tất cả các thử nghiệm đã được chạy với bản phát hành bản phát hành.

Nhưng vẫn có thể có lỗi trong các kết quả này. Nếu bạn nhận thấy bất kỳ, xin vui lòng cho tôi biết.

Ba toán tử đúc là:

Trong thực tế thực tế, bạn thường sẽ thấy rằng các yêu cầu của ứng dụng của bạn sẽ xác định nhà điều hành bạn sử dụng. DirectCast và TryCast có yêu cầu rất hẹp.

Khi bạn sử dụng DirectCast, loại phải được biết. Mặc dù mã ...

theString = DirectCast [theObject, String]

... sẽ biên dịch thành công nếu theObject không phải là một chuỗi đã có, sau đó mã sẽ ném một ngoại lệ thời gian chạy.

TryCast thậm chí còn hạn chế hơn vì nó sẽ không hoạt động ở tất cả các loại "giá trị" như Integer. [String là một kiểu tham chiếu. Để biết thêm về kiểu giá trị và kiểu tham chiếu, hãy xem bài viết đầu tiên trong loạt bài này.] Mã này ...

theInteger = TryCast [theObject, Integer]

... thậm chí sẽ không biên dịch.

TryCast rất hữu ích khi bạn không chắc chắn loại đối tượng nào bạn đang làm việc. Thay vì ném một lỗi như DirectCast, TryCast chỉ trả về Không có gì. Thực hành thông thường là kiểm tra Không có gì sau khi thực hiện TryCast.

Chỉ CType [và các toán tử "Chuyển đổi" khác như CInt và CBool] sẽ chuyển đổi các kiểu không có mối quan hệ kế thừa như là một số nguyên cho một chuỗi:

> Dim theString As String = "1" Dim theInteger As Integer theInteger = CType [theString, Integer]

Điều này hoạt động vì CType sử dụng "các hàm trợ giúp" không phải là một phần của .NET CLR [Common Language Runtime] để thực hiện các chuyển đổi này.

Nhưng hãy nhớ rằng CType cũng sẽ ném một ngoại lệ nếu theString không chứa một cái gì đó có thể được chuyển đổi thành một số nguyên.

Nếu có khả năng là chuỗi không phải là số nguyên như thế này ...

> Dim theString As String = "George"

... sau đó không có nhà điều hành đúc sẽ hoạt động. Ngay cả TryCast cũng không hoạt động với Integer vì nó là một kiểu giá trị. Trong trường hợp như thế này, bạn sẽ phải sử dụng kiểm tra tính hợp lệ, chẳng hạn như toán tử TypeOf, để kiểm tra dữ liệu của bạn trước khi thử truyền nó.

Tài liệu hướng dẫn của Microsoft cho DirectCast đặc biệt đề cập đến việc đúc với một kiểu Object vì vậy đó là những gì tôi đã sử dụng trong bài kiểm tra hiệu suất đầu tiên của mình. Thử nghiệm bắt đầu trên trang tiếp theo!

DirectCast thường sẽ sử dụng một loại đối tượng, vì vậy đó là những gì tôi đã sử dụng trong bài kiểm tra hiệu năng đầu tiên của mình. Để bao gồm TryCast trong bài kiểm tra, tôi cũng bao gồm một khối If vì gần như tất cả các chương trình sử dụng TryCast sẽ có một. Trong trường hợp này, tuy nhiên, nó sẽ không bao giờ được thực hiện.

Đây là mã so sánh cả ba khi truyền một đối tượng tới một chuỗi:

> Dim theTime As New Đồng hồ bấm giờ [] Dim theString Như String Dim theObject As Object = "Một đối tượng" Dim theIterations như Integer = CInt [Iterations.Text] * 1000000 '' DirectCast Test theTime.Start [] Đối với i = 0 Đến theIterations theString = DirectCast [theObject, String] Tiếp theo theTime.Stop [] DirectCastTime.Text = theTime.ElapsedMilliseconds.ToString '' CType Test theTime.Restart [] Đối với i As Integer = 0 Để theIterations theString = CType [theObject, String] Tiếp theo theTime. Stop [] CTypeTime.Text = theTime.ElapsedMilliseconds.ToString '' TryCast Test theTime.Restart [] Đối với i As Integer = 0 Đến theIterations theString = TryCast [theObject, String] Nếu theString là không có gì thì MsgBox ["Điều này sẽ không bao giờ hiển thị" ] End If Next theTime.Stop [] TryCastTime.Text = theTime.ElapsedMilliseconds.ToString

Thử nghiệm ban đầu này dường như cho thấy Microsoft là đúng trên mục tiêu. Đây là kết quả. [Thử nghiệm với số lần lặp lại lớn hơn và nhỏ hơn cũng như thử nghiệm lặp lại trong các điều kiện khác nhau không cho thấy bất kỳ sự khác biệt đáng kể nào từ kết quả này].

--------
Nhấp vào đây để hiển thị hình minh họa
--------

DirectCast và TryCast tương tự ở 323 và 356 mili giây, nhưng CType mất hơn ba lần nhiều thời gian ở 1018 mili giây. Khi truyền các loại tham chiếu như thế này, bạn trả tiền cho tính linh hoạt của CType trong hoạt động.

Nhưng nó luôn luôn hoạt động theo cách này? Ví dụ của Microsoft trong trang của họ cho DirectCast chủ yếu là hữu ích để cho bạn biết những gì sẽ không làm việc bằng cách sử dụng DirectCast, không phải những gì sẽ. Đây là ví dụ của Microsoft:

> Dim q Như Object = 2.37 Dim i As Integer = CType [q, Integer] 'Chuyển đổi sau thất bại tại thời gian chạy Dim j As Integer = DirectCast [q, Integer] Dim f As New System.Windows.Forms.Form Dim c Khi System.Windows.Forms.Control 'Chuyển đổi sau thành công. c = DirectCast [f, System.Windows.Forms.Control]

Nói cách khác, bạn không thể sử dụng DirectCast [hoặc TryCast, mặc dù chúng không đề cập đến nó ở đây] để đúc kiểu đối tượng thành kiểu Integer, nhưng bạn có thể sử dụng DirectCast để đúc kiểu Biểu mẫu thành kiểu điều khiển.

Hãy kiểm tra hiệu suất của ví dụ của Microsoft về những gì sẽ làm việc với DirectCast. Sử dụng cùng một mẫu mã được hiển thị ở trên, thay thế ...

> c = DirectCast [f, System.Windows.Forms.Control]

... vào mã cùng với các thay thế tương tự cho CType và TryCast. Kết quả là một chút ngạc nhiên.

--------
Nhấp vào đây để hiển thị hình minh họa
--------

DirectCast thực sự là chậm nhất trong ba lựa chọn ở mức 145 mili giây. CType chỉ nhanh hơn một chút ở 127 mili giây nhưng TryCast, bao gồm khối If, là nhanh nhất ở 77 mili giây. Tôi cũng đã cố gắng viết các đối tượng của riêng mình:

> Lớp ParentClass ... Lớp cuối lớp ChildClass thừa kế ParentClass ... Lớp cuối

Tôi có kết quả tương tự. Có vẻ như nếu bạn không truyền một loại đối tượng, tốt hơn là bạn không sử dụng DirectCast.

Video liên quan

Chủ Đề