• 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#

Moderators: tungblt, vuathongtin

neverland87
Guru
Guru
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

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

Postby neverland87 » Tue 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

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

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

Postby anhtuyenbk » Tue 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

User avatar
1045007
Thành viên danh dự
Thành viên danh dự
Posts: 551
Joined: Mon 09/06/2008 3:35 pm
Location: TP Cần Thơ
Has thanked: 2 times
Been thanked: 64 times
Contact:

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

Postby 1045007 » Tue 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
Posts: 307
Joined: Tue 11/08/2009 3:27 pm

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

Postby NovaFooc » Tue 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
Posts: 307
Joined: Tue 11/08/2009 3:27 pm

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

Postby NovaFooc » Tue 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
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

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

Postby neverland87 » Tue 19/01/2010 9:55 pm

anhtuyenbk wrote: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
Posts: 252
Joined: Wed 07/09/2005 4:02 pm
Location: Hải Phòng
Has thanked: 1 time
Been thanked: 12 times
Contact:

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

Postby HaiPT » Tue 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
Posts: 252
Joined: Wed 07/09/2005 4:02 pm
Location: Hải Phòng
Has thanked: 1 time
Been thanked: 12 times
Contact:

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

Postby HaiPT » Tue 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
Posts: 252
Joined: Wed 07/09/2005 4:02 pm
Location: Hải Phòng
Has thanked: 1 time
Been thanked: 12 times
Contact:

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

Postby HaiPT » Tue 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
Posts: 415
Joined: Sat 14/07/2007 10:06 pm
Location: Hà Nội
Been thanked: 1 time

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

Postby tienlbhoc » Wed 20/01/2010 7:31 am

HaiPT wrote: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/

User avatar
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Posts: 1123
Joined: Wed 24/09/2008 4:04 pm
Location: TPHCM
Has thanked: 1 time
Been thanked: 28 times

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

Postby tungcan5diop » Wed 20/01/2010 9:28 am

HaiPT wrote: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
[vbnet] Dim str As String = "ABC"[/vbnet]
--->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
[vbnet] Dim strSt As System.String = "ABC"[/vbnet]
-->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
Posts: 252
Joined: Wed 07/09/2005 4:02 pm
Location: Hải Phòng
Has thanked: 1 time
Been thanked: 12 times
Contact:

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

Postby HaiPT » Wed 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
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

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

Postby neverland87 » Wed 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:
[vbnet]Private Sub txtA_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtA.TextChanged
Dim C As Integer = Convert.ToInt32(txtA.Text) * Convert.ToInt32(txtB.Text)
End Sub[/vbnet]
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
Posts: 307
Joined: Tue 11/08/2009 3:27 pm

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

Postby NovaFooc » Wed 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
Posts: 490
Joined: Sat 26/05/2007 4:31 pm
Been thanked: 8 times

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

Postby neverland87 » Wed 20/01/2010 9:52 pm

NovaFooc wrote: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
Posts: 307
Joined: Tue 11/08/2009 3:27 pm

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

Postby NovaFooc » Thu 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

User avatar
Kasper
Guru
Guru
Posts: 1063
Joined: Fri 16/05/2008 10:54 am
Has thanked: 2 times
Been thanked: 76 times
Contact:

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

Postby Kasper » Thu 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.


Return to “Visual Basic .NET và C# (VB.NET & C#)”

Who is online

Users browsing this forum: No registered users and 2 guests