• 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

Có gì khác nhau giữa 1 số lệnh??

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

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Có gì khác nhau giữa 1 số lệnh??

Postby thuyan1990 » Mon 11/01/2010 7:13 pm

Các anh chỉ cho em hỏi chúng khác nhau thế nào
+ Application.Exit() => sẽ thoát chương trình ở bất cứ chỗ nào gọi lệnh

+ Close() => sẽ thoát chương trình nếu:
1. Đóng form đầu tiên với thiết lập: Chương trình thoát khi form startup bị đóng
2. Khi form cuối cùng bị đóng với thiết lập: khi form cuối cùng đóng.

+ Me.Dispose(), Me.Close()
Đối với các form được gọi hiện lên bằng ShowDialog() thay vì Show() thì dùng xong phải Dispose (ở cùng nơi gọi ShowDialog() chứ không phải trong mã của form đó, trong mã lệnh của form đó thì vẫn Close() thôi). Lý do là vì form hiện lên dạng này khi đóng lại bằng Close() thực chất không đóng mà chỉ ẩn đi, để người ta lấy thông tin từ nó. Do vậy, khi lấy các thông tin cần thiết rồi, thì phải cho Dispose() để hủy nó đi.

+ End => Nó sẽ làm chương trình đóng cái rụp, mà không đi qua các sự kiện đóng (FormClosed, FormClosing), nếu có cần lưu lại thông tin nào đó trước khi tắt chương trình mà dùng End thì coi như không lưu được gì hết.

+ trim(chuoi), chuoi.trim() => Về chức năng chung cắt bỏ khoảng trắng thì 2 hàm Trim là giống nhau, tuy nhiên hàm chuoi.Trim() có thêm 1 hàm overload cho bạn lựa chọn cắt bỏ ký tự khác khoảng trắng nữa.

.... (sẽ tiếp tục cập nhật) :D
Thanks!!!
Last edited by thuyan1990 on Wed 13/01/2010 9:12 pm, edited 1 time in total.



Tiepmv.cntt

Re: Có gì khác nhau không??

Postby Tiepmv.cntt » Mon 11/01/2010 8:05 pm

Hí! Hỏi gì mà kỳ quặc vậy. Xem tiếng Anh và dịch sang tiếng Việt đã thấy khác rồi. Hì!

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Có gì khác nhau không??

Postby thuyan1990 » Mon 11/01/2010 8:40 pm

Code: Select all

Xem tiếng Anh và dịch sang tiếng Việt đã thấy khác rồi. Hì!


Câu này thật sự kỳ quặc thật ko hiểu j cả :D

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Có gì khác nhau không??

Postby truongphu » Mon 11/01/2010 8:57 pm

hàm Exit là hàm đóng cưỡng bức, mọi thứ stop ngay dù đang làm
hàm close là hàm đóng nhẹ nhàng, có thể thi hành các sự kiện trước khi đóng

------
Trim(String) là hàm từ VB6, loại space 2 đầu
String.Trim() mạnh hơn, loại bỏ space 2 đầu, kể cả newline
Last edited by truongphu on Mon 11/01/2010 9:32 pm, edited 1 time in total.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

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

Re: Có gì khác nhau không??

Postby neverland87 » Mon 11/01/2010 9:31 pm

thuyan1990 wrote:Các anh chỉ cho em hỏi chúng khác nhau thế nào
Application.Exit() <=> Close()
trim(chuoi) <=> chuoi.trim()
.... (sẽ tiếp tục cập nhật) :D
Thanks!!!

Close() --> chỉ đóng form đang mở, chưa chắc đóng chương trình nếu form bị tắt không phải form StartUp
Application.Exit() ---> đóng hẳn chương trình, dù form bị tắt bằng hàm này là form thường hay form StartUp.
----
Về hàm Trim như bạn ghi thì tương đương nhau, mà chắc VB.NET thôi, chứ C# hổng có hàm Trim()
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

User avatar
thuocthoigian
Thành viên danh dự
Thành viên danh dự
Posts: 167
Joined: Mon 31/07/2006 2:07 pm
Location: Minh Lộ - Thanh Hóa
Contact:

Re: Có gì khác nhau không??

Postby thuocthoigian » Mon 11/01/2010 9:37 pm

trim(chuoi) <=> chuoi.trim()

gõ 1 dấu chấm thay phải gõ 2 dấu () --> rất tiện khi code :D
Sự tưởng tượng còn quan trọng hơn kiến thức! (A.Einstein)

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Có gì khác nhau không??

Postby truongphu » Mon 11/01/2010 9:48 pm

Nói thêm cho rõ:
nếu có sự kiện trong Form.Closed và Form.Closing

* Dùng Form.Close thì êm, các sự liện được thi hành
* Dùng application.exit thì đóng ngay lập tức, bỏ qua các sự kiện trên

Riêng String.Trim() loại bỏ cả vbnewline tôi chưa thử, chỉ biết thế
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
hoangthu1974
Guru
Guru
Posts: 813
Joined: Thu 09/03/2006 9:30 am
Location: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 times
Contact:

Re: Có gì khác nhau không??

Postby hoangthu1974 » Mon 11/01/2010 9:50 pm

thuyan1990 wrote:Các anh chỉ cho em hỏi chúng khác nhau thế nào
Application.Exit() <=> Close()
trim(chuoi) <=> chuoi.trim()
.... (sẽ tiếp tục cập nhật) :D
Thanks!!!

Application.Exit() sẽ thoát chương trình ở bất cứ chỗ nào gọi lệnh. Còn Close() sẽ thoát chương trình nếu:
1. Đóng form đầu tiên với thiết lập: Chương trình thoát khi form startup bị đóng
2. Khi form cuối cùng bị đóng với thiết lập: khi form cuối cùng đóng.

Trim(chuoi) và chuoi.Trim() giống nhau.

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Có gì khác nhau không??

Postby thuyan1990 » Mon 11/01/2010 10:20 pm

Dạ em xin cảm ơn các anh chị nhiều vì nhờ các anh chị mà em hiểu thêm chút nữa. Và cũng mong các anh chị giúp đỡ cho em thêm sau này!

User avatar
NoBi
Quản trị
Quản trị
Posts: 961
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 53 times
Been thanked: 66 times
Contact:

Re: Có gì khác nhau không??

Postby NoBi » Mon 11/01/2010 10:36 pm

Về chức năng chung cắt bỏ khoảng trắng thì 2 hàm Trim là giống nhau, tuy nhiên hàm chuoi.Trim() có thêm 1 hàm overload cho bạn lựa chọn cắt bỏ ký tự khác khoảng trắng nữa. Tôi hay dùng hàm overload này để loại bỏ ký tự thừa ở cuối chuỗi sau khi ra khỏi vòng lặp ghép chuỗi:
  1. Dim s As String = ""
  2.         For i As Byte = 0 To 10
  3.             s &= i & ","
  4.         Next
  5.         ' s = 0,1,2,3,4,5,6,7,8,9,10,
  6.  
  7.         s = s.Trim(",".ToCharArray)
  8.         ' s = 0,1,2,3,4,5,6,7,8,9,10

Khuyến cáo nên dùng chuoi.Trim() để làm quen với lập trình hướng đối tượng, khi xem code C# hay ngôn ngữ hướng đối tượng khác cũng không thấy lạ.
:>

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Có gì khác nhau không??

Postby thuyan1990 » Wed 13/01/2010 11:11 am

Vậy còn Me.Dispose() <=> Me.Close() (dùng cho form hiện tại)
và hàm End() có gì khác so với Application.Exit(), Close()

Mong các anh chị chỉ giáo tiếp

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

Re: Có gì khác nhau không??

Postby neverland87 » Wed 13/01/2010 12:15 pm

thuyan1990 wrote:Vậy còn Me.Dispose() <=> Me.Close() (dùng cho form hiện tại)
và hàm End() có gì khác so với Application.Exit(), Close()

Dispose là hàm hủy 1 đối tượng trong bộ nhớ máy vi tính, form thực chất cũng là 1 đối tượng.
Theo mình, có lẽ dùng Dispose sẽ lợi hơn so với dùng Close, vì không biết khi Close form, bộ nhớ mà form chiếm cứ có được dọn dẹp đi không.

Hàm End: Không biết :D , bên C# không có.
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

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: Có gì khác nhau không??

Postby tungcan5diop » Wed 13/01/2010 1:08 pm

hàm End(kết thúc) mạnh lắm,thoát luôn cái Form hiện tại đang mở.
theo mình phải Close() trước rồi hãy mới Dispose,phải đóng nó rồi hãy hủy nó,hủy ngang như vậy,dễ sinh ra rác lắm
Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

Re: Có gì khác nhau không??

Postby alexanderdna » Wed 13/01/2010 1:10 pm

Theo MSDN:
Đối với các form được gọi hiện lên bằng ShowDialog() thay vì Show() thì dùng xong phải Dispose (ở cùng nơi gọi ShowDialog() chứ không phải trong mã của form đó, trong mã lệnh của form đó thì vẫn Close() thôi). Lý do là vì form hiện lên dạng này khi đóng lại bằng Close() thực chất không đóng mà chỉ ẩn đi, để người ta lấy thông tin từ nó. Do vậy, khi lấy các thông tin cần thiết rồi, thì phải cho Dispose() để hủy nó đi.

Thí dụ:
  1. ' Hiện form
  2. frmYeuCau.ShowDialog() 'Form này chưa đóng thì chương trình chưa qua dòng kế tiếp
  3. ' Lấy thông tin
  4. Me.txtHoTen.Text = frmYeuCau.txtHoTen.Text
  5. ' Hủy form
  6. frmYeuCau.Dispose()


End là ở bên VB. Nó sẽ làm chương trình đóng cái rụp, mà không đi qua các sự kiện đóng (FormClosed, FormClosing), nếu có cần lưu lại thông tin nào đó trước khi tắt chương trình mà dùng End thì coi như không lưu được gì hết.

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Có gì khác nhau không??

Postby thuyan1990 » Tue 19/01/2010 2:54 pm

vbCrLf , vbNewLine, chr(13) & chr(10)
Phần biệt giữa chúng thế nào vậy các anh chị?

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: Có gì khác nhau không??

Postby tungcan5diop » Tue 19/01/2010 3:04 pm

sao bạn ko thử tự test nhỉ,câu trả lời sẽ chính xác hơn
vd:
  1. dim str as String=""
  2. str="thuyan1990 " &  ControlChars.NewLine
  3.  

sau dấu chấm là hàng loạt cái mà bạn cần biết đó :D
Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Có gì khác nhau không??

Postby thuyan1990 » Tue 19/01/2010 5:02 pm

Đã test rồi nên mới biết 3 cái đó cùng 1 nhiệm vụ là xuống dòng . Nhưng ko biết nó có khì khác nữa :(

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

Re: Có gì khác nhau không??

Postby neverland87 » Tue 19/01/2010 6:15 pm

thuyan1990 wrote:Đã test rồi nên mới biết 3 cái đó cùng 1 nhiệm vụ là xuống dòng . Nhưng ko biết nó có khì khác nữa :(

Nếu vậy thì không khác nhau, chỉ là 1 món ăn với 3 cách nấu, nhưng cách nấu nào cũng cho kết quả vào miệng >:)

vbCrLf , vbNewLine : đều là xuống dòng
vbCrLf, chr(13) & chr(10): động tác xuống dòng thực chất gồm 2 thao tác nhỏ: xuống 1 dòng dưới con nháy (mã 13 hoặc Cr) và trả về đầu dòng (mã 10 hoặc Lf).
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

thuyan1990
Thành viên trung thành
Thành viên trung thành
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: Có gì khác nhau không??

Postby thuyan1990 » Wed 20/01/2010 11:36 am

vbCrLf , vbNewLine : đều là xuống dòng
vbCrLf, chr(13) & chr(10): động tác xuống dòng thực chất gồm 2 thao tác nhỏ: xuống 1 dòng dưới con nháy (mã 13 hoặc Cr) và trả về đầu dòng (mã 10 hoặc Lf).


Vậy thì ko biết VB.NET nghĩ sao mà lại đưa ra nhiều hàm mà có cùng 1 mục đích nên mình nghĩ nó có cái gì đó trong đó mà mình chưa biết .
Chẳng hạn như hàm chuoi.trim() và trim(chuoi) như anh NoBi nêu lên sự khác nhau của nó :D

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: Có gì khác nhau không??

Postby anhtuyenbk » Wed 20/01/2010 11:43 am

Hàm chính của VB.Net chỉ là chuoi.trim().
còn cái trim(chuoi) được làm thêm chẳng qua là để cho các bạn trước kia vốn xài VB6 cảm thấy quen thuộc mà thôi.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang


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

Who is online

Users browsing this forum: No registered users and 6 guests