• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

[Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi neverland87 » T.Ba 19/01/2010 8:07 pm

Như tựa đề của bài này, đố mọi người tìm được sự khác nhau cơ bản giữa phương thức Convert.ToString(...) và <đối tượng>.ToString().


SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi anhtuyenbk » T.Ba 19/01/2010 8:59 pm

The basic difference between them is “Convert” function handles NULLS while “i.ToString()” does not, it will throw a NULL reference exception error. So as good coding practice using “convert” is always safe.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

Hình đại diện của người dùng
1045007
Thành viên danh dự
Thành viên danh dự
Bài viết: 551
Ngày tham gia: T.Hai 09/06/2008 3:35 pm
Đến từ: TP Cần Thơ
Has thanked: 2 time
Been thanked: 64 time
Liên hệ:

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi 1045007 » T.Ba 19/01/2010 9:06 pm

1 cái static 1 cái không static
Xếp hình cổ điển for Android-https://play.google.com
♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi NovaFooc » T.Ba 19/01/2010 9:26 pm

cái này thì đc
Convert.ToString(obj, New CultureInfo("en-US"))
còn zậy thì k0 đc (nhưng mà trong WPF thì lại đc :) )
obj.ToString(New CultureInfo("en-us"))

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi NovaFooc » T.Ba 19/01/2010 9:43 pm

quên, bình thường thì chẳng nói nhưng mà những kiểu như là sizef thì hơi bị ức chế... vì dùng convert.tostring cũng rứa :D

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi neverland87 » T.Ba 19/01/2010 9:55 pm

anhtuyenbk đã viết:The basic difference between them is “Convert” function handles NULLS while “i.ToString()” does not, it will throw a NULL reference exception error. So as good coding practice using “convert” is always safe.

Không hổ danh là cao thủ anhtuyenbk.
--> Chúng ta nên sử dụng Convert.ToString để mã nguồn được 'an toàn'.
Cám ơn anhtuyenbk về câu trả lời này.

@Mọi người cứ tiếp tục bàn luận nhé. Mình lập topic dạng đố vui này không hẳn là để đố cho vui, mà chủ yếu là tạo ra sự đam mê tìm tòi trong lĩnh vực lập trình. Mọi người ủng hộ nhá B-)
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

HaiPT
VIP
VIP
Bài viết: 252
Ngày tham gia: T.Tư 07/09/2005 4:02 pm
Đến từ: Hải Phòng
Has thanked: 1 time
Been thanked: 12 time
Liên hệ:

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi HaiPT » T.Ba 19/01/2010 10:50 pm

:) Dùng ToString() nhiều khi tốt hơn , ví dụ để display 12345678 thành 1 cụm 3 số: 123 456 789 ta có thể code như sau
string strResult = 123456789.ToString("# ### ###.0") ;
Thay vì hì hục tìm thuật toán tách xâu :)
Phạm Hải
Quản trị dự án ,Chuyên gia đào tạo
Đại học FPT

HaiPT
VIP
VIP
Bài viết: 252
Ngày tham gia: T.Tư 07/09/2005 4:02 pm
Đến từ: Hải Phòng
Has thanked: 1 time
Been thanked: 12 time
Liên hệ:

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi HaiPT » T.Ba 19/01/2010 10:53 pm

Câu đố tiếp :

String strX ;

Hai lệnh so sánh chuỗi sau có gì khác, nên dùng cái nào ?
if (StrX.Equal("ABCDEF") ) { ///}
hay
if (StrX=="ABCDEF") ) { ///}
;))
Phạm Hải
Quản trị dự án ,Chuyên gia đào tạo
Đại học FPT

HaiPT
VIP
VIP
Bài viết: 252
Ngày tham gia: T.Tư 07/09/2005 4:02 pm
Đến từ: Hải Phòng
Has thanked: 1 time
Been thanked: 12 time
Liên hệ:

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi HaiPT » T.Ba 19/01/2010 10:55 pm

Câu nữa : các khai báo sau có gì khác nhau ;))
string strSt = "ABC";
System.String strStr = "ABC";
Phạm Hải
Quản trị dự án ,Chuyên gia đào tạo
Đại học FPT

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi tienlbhoc » T.Tư 20/01/2010 7:31 am

HaiPT đã viết:Câu đố tiếp :

String strX ;

Hai lệnh so sánh chuỗi sau có gì khác, nên dùng cái nào ?
if (StrX.Equal("ABCDEF") ) { ///}
hay
if (StrX=="ABCDEF") ) { ///}
;))

Trong c# không biết nhưng java thì 2 cái này cực kỳ khác nhau , equal để so sánh chuỗi , == để so sánh đối tượng , cho 2 đối tượng khác nhau cùng 1 string thì nó vẫn cho ra khác nhau , lúc đầu không biết chạy bug suốt :D , c# dễ thở hơn thì phải >:)
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

Hình đại diện của người dùng
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Bài viết: 1123
Ngày tham gia: T.Tư 24/09/2008 4:04 pm
Đến từ: TPHCM
Has thanked: 1 time
Been thanked: 28 time

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi tungcan5diop » T.Tư 20/01/2010 9:28 am

HaiPT đã viết:Câu đố tiếp :

String strX ;

Hai lệnh so sánh chuỗi sau có gì khác, nên dùng cái nào ?
if (StrX.Equal("ABCDEF") ) { ///}
hay
if (StrX=="ABCDEF") ) { ///}
;))

  1.     Dim a As String = ""
  2.         If a.Equals("abc") = True Then Exit Sub
  3.         If a = "abc" Then Exit Sub

Equals--> như trong câu đố tham số nhận vào là một object,có thể là bất kì đối tượng nào-->nếu so sánh với một String sẽ chậm hơn
a = "abc" -->cụ thể ở đây sẽ là một string,so sánh sẽ nhanh hơn

--->nằm trong thư viện System.String,nếu bạn có nhu cầu xài 1 kiểu biến nhiều lần thì nên import luôn thư viện,tại vì mỗi lần LoadFrom lên chương trình sẽ load hết all các thư viện được import trong chương trình
  1.  Dim strSt As System.String = "ABC"

-->nếu bạn chỉ xài biến một lần hay rất ít thì nên xài kiểu này,vì khi nào cần xài biến này thì ta mới load thư viện của nó lên,giảm nhẹ chương trình khi LoadForm
Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

HaiPT
VIP
VIP
Bài viết: 252
Ngày tham gia: T.Tư 07/09/2005 4:02 pm
Đến từ: Hải Phòng
Has thanked: 1 time
Been thanked: 12 time
Liên hệ:

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi HaiPT » T.Tư 20/01/2010 8:07 pm

Câu thứ 1 thì Tienlbhoc trả lời đúng rồi ,với trường hợp này .NET hiểu như JAVA
Câu thứ 2 :Các bạn thấy trong C# hay VB.NET sẽ có hai kiểu khai báo rất giống nhau
C# : string str ="ABC" ;
System.String str ="ABC";
VB.NET
dim str as String ="ABC"
dim str as System.String = "ABC"
Câu trả lời là : Hai cách khai báo này chả khác gì nhau cả, đều tạo ra cùng 1 mã IL , string là alias reference đên System.String
Với JAVA thì nó là hai khai báo khác nhau
Phạm Hải
Quản trị dự án ,Chuyên gia đào tạo
Đại học FPT

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi neverland87 » T.Tư 20/01/2010 8:40 pm

Cám ơn anh HaiPT đã có những chia sẻ rất thú vị, thực tình em cũng ứ ớ với tình huống anh đặt ra :">
tiếp sau đây là 1 tình huống khác có dính đến chuỗi, chẳng là :
- Mình đặt 2 textbox control lần lượt là txtA và txtB lên form.
- Trong event Load của form, mình có đoạn code sau:
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         txtA.Text = "0"
  3.         txtB.Text = "0"
  4.     End Sub

-Sau đó thêm tiếp cái hàm thụ lý event TextChanged của txtA như dưới:
  1. Private Sub txtA_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtA.TextChanged
  2.         Dim C As Integer = Convert.ToInt32(txtA.Text) * Convert.ToInt32(txtB.Text)
  3.     End Sub

Nhấn F5 chạy thì bị lỗi!!
Các bạn hãy giúp mình trả lời tại sao lại bị lỗi nhé, nhưng đừng code lại đoạn code mình đưa, hãy thử tìm ra vấn đề mà không cần phải code :D
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi NovaFooc » T.Tư 20/01/2010 9:31 pm

câu này dễ nè, để em xơi :">
theo logic là txtA.Text = "0" -> txtA.TextChanged -> Convert.ToInt32(txtB.Text) error vì txtB.Text = "0" chưa kịp chạy :)

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi neverland87 » T.Tư 20/01/2010 9:52 pm

NovaFooc đã viết:câu này dễ nè, để em xơi :">
theo logic là txtA.Text = "0" -> txtA.TextChanged -> Convert.ToInt32(txtB.Text) error vì txtB.Text = "0" chưa kịp chạy :)

Như vậy có thể suy ra được: event của các control luôn có độ ưu tiên hơn event Load của Window??
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi NovaFooc » T.Năm 21/01/2010 6:47 am

cái này thì k0 đc rõ lắm, nhưng mà cảm nhận đc là cứ có cái gì raiseEvent thì sẽ xử lí event sinh ra luôn, xong xuôi rồi mới tiếp tục những dòng code còn lại

Hình đại diện của người dùng
Kasper
Guru
Guru
Bài viết: 1062
Ngày tham gia: T.Sáu 16/05/2008 10:54 am
Has thanked: 2 time
Been thanked: 76 time
Liên hệ:

Re: [Đố]Sự khác nhau giữa Convert.ToString() và .ToString()

Gửi bàigửi bởi Kasper » T.Năm 21/01/2010 8:31 am

Trong .NET thằng String.Equals có nhiều overload methods:, trích msdn:

  1. Equals(Object) -> Determines whether this instance of String and a specified object, which must also be a String object, have the same value. (Overrides Object..::.Equals(Object).)
  2. Equals(String) -> Determines whether this instance and another specified String object have the same value.
  3. Equals(String, String) -> Determines whether two specified String objects have the same value.
  4. Equals(String, StringComparison) -> Determines whether this string and a specified String object have the same value. A parameter specifies the culture, case, and sort rules used in the comparison.
  5. Equals(String, String, StringComparison) -> Determines whether two specified String objects have the same value. A parameter specifies the culture, case, and sort rules used in the comparison.
  6.  
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.5 khách