• 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#] Sử dụng biến mà không cần khởi tạo

Các thủ thuật liên quan đến ứng dụng, biểu mẫu và control

Moderators: tungcan5diop, QUANITGROBEST

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

[C#] Sử dụng biến mà không cần khởi tạo

Postby hdn » Sun 29/11/2009 9:25 pm

Thủ thuật: Sử dụng biến mà không cần khởi tạo
Tác giả: hdn
Mô tả: Sử dụng biến mà không cần phải khởi tạo ở đầu chương trình, có thể tạo và dùng ở bất kì đâu mà không cần quan tâm đến kiểu dữ liệu


Sử dụng class này bạn sẽ không cần quan tâm đến biến mình tạo ra thuộc kiểu dữ liệu nào (nhưng lấy dữ liệu ra thì phải xác định kiểu)

Code: Select all

  1.  
  2. public class GlobalV
  3. {
  4.     static Dictionary<string, string> globalvar = new Dictionary<string, string>();
  5.    
  6.     public static void GlobalValue(string name, string value)
  7.     {
  8.         if (!globalvar.ContainsKey(name))
  9.             globalvar.Add(name, value);
  10.         else globalvar[name] = value;
  11.     }
  12.     public static void GlobalValue(string name, int value)
  13.     {
  14.         if (!globalvar.ContainsKey(name))
  15.             globalvar.Add(name, value.ToString());
  16.         else globalvar[name] = value.ToString();
  17.     }
  18.     public static void GlobalValue(string name, float value)
  19.     {
  20.         if (!globalvar.ContainsKey(name))
  21.             globalvar.Add(name, value.ToString());
  22.         else globalvar[name] = value.ToString();
  23.     }
  24.  
  25.     public static string GetString(string name)
  26.     {
  27.         if (globalvar.ContainsKey(name))
  28.             return globalvar[name];
  29.         else return null;
  30.     }
  31.     public static int GetInt(string name)
  32.     {
  33.         if (globalvar.ContainsKey(name))
  34.             return int.Parse(globalvar[name]);
  35.         else return 0;
  36.     }
  37.     public static float GetFloat(string name)
  38.     {
  39.         if (globalvar.ContainsKey(name))
  40.             return float.Parse(globalvar[name]);
  41.         else return 0;
  42.     }
  43. }
  44.  

Cách sử dụng:
Khi bạn muốn tạo một biến mới, bạn chỉ cần viết code như sau:

Code: Select all

  1. GlobalV.GlobalValue("Tên biến", <Giá trị>);

tạo biến với bất kì kiểu dữ liệu nào, tên biến là kiểu string
ví dụ

Code: Select all

  1. GlobalV.GlobalValue("DiemToan", 10); // Kiểu int

Code: Select all

  1. GlobalV.GlobalValue("DiemLy", 9.5); // Kiểu float

Code: Select all

  1. GlobalV.GlobalValue("Ten", "Huy"); // Kiểu string

Khi cần đặt giá trị cho 1 biến đã tạo, bạn cũng viết code như trên

Để lấy giá trị của biến, bạn phải xác định kiểu dữ liệu của biến cần lấy ra sau đó dùng các hàm
- GlobalV.GetString("Tên biến") nếu muốn lấy dữ liệu kiểu string
- GlobalV.GetInt("Tên biến") nếu muốn lấy dữ liệu kiểu int
- GlobalV.GetFloat("Tên biến") nếu muốn lấy dữ liệu kiểu float
ví dụ:

Code: Select all

  1. string i = GlobalV.GetString("Ten");
  2. int j = GlobalV.GetString("DiemToan");
  3. float k = GlobalV.GetString("DiemLy");


Nếu biến đó không tồn tại thì ko báo lỗi mà trả về giá trị null nếu là string, 0 nếu là int hoặc float


:|

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

Re: [C#] Sử dụng biến mà không cần khởi tạo

Postby neverland87 » Sun 29/11/2009 11:19 pm

Việc sử dụng biến như trong bài viết này có ưu và nhược điểm như thế nào, xin bạn hdn giảng giải cho mình biết.
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

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: [C#] Sử dụng biến mà không cần khởi tạo

Postby tienlbhoc » Mon 30/11/2009 6:11 am

ưu điểm có thể duyệt các biến được lưu trong mảng string hoặc có quy luật , không cần phải dùng mảng với chỉ số , nhược điểm viết dài :D , trông cứ ngu ngu thế nào ấy :D
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
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#] Sử dụng biến mà không cần khởi tạo

Postby anhtuyenbk » Mon 30/11/2009 9:15 am

- Quá dài dòng.
- Đâu có thấy ngắn hơn so với cách khởi tạo thông thường.
- Chỉ thấy xài được với string với int thôi chứ đâu có với bất kỳ kiểu dữ liệu nào.
- Đoạn code này chắc chắn báo lỗi.

Code: Select all

  1. int j = GlobalV.GetString("DiemToan");
  2. float k = GlobalV.GetString("DiemLy");

==> Chẳng thấy có gì hay >:) >:)
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

Re: [C#] Sử dụng biến mà không cần khởi tạo

Postby hdn » Mon 30/11/2009 12:24 pm

Em chỉ đề xuất phương hướng vậy thôi
cách sử dụng biến thế này linh động hơn nhiều mà :|
Muốn có các kiểu dữ liệu khác thì cứ thêm vào, ví dụ thêm kiểu boolean thì thêm

Code: Select all

  1.  
  2. public static bool GetBool(string name)
  3.     {
  4.         if ((globalvar.ContainsKey(name)) && (globalvar[name].ToUpper() == "TRUE"))
  5.             return true;
  6.         else return false;
  7.     }
  8.  

:|
:|

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#] Sử dụng biến mà không cần khởi tạo

Postby anhtuyenbk » Mon 30/11/2009 12:28 pm

hdn wrote:cách sử dụng biến thế này linh động hơn nhiều mà :|

Nói thật chẳng thấy linh động hơn chỗ nào. :P :P
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

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#] Sử dụng biến mà không cần khởi tạo

Postby hoangthu1974 » Mon 30/11/2009 12:39 pm

Theo anh thì rắc rối quá. Nếu cần khai báo thì cứ việc khai báo rồi gán cho nó giá trị luôn, cần gì phải có thêm cái hàm để làm gì nhỉ???

Code: Select all

  1. GlobalV.GlobalValue("DiemToan", 10); // Kiểu int

Với

Code: Select all

  1. public int DiemToan = 10;

cái nào ngắn hơn???
Lúc cần có thể sử dụng chức năng Go to Definition để tìm ngược về chỗ mình đã khai báo được.

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

Re: [C#] Sử dụng biến mà không cần khởi tạo

Postby hdn » Mon 30/11/2009 9:39 pm

ví dụ đang ở trong 1 class này, muốn truy xuất 1 biến nào đó ở đâu đó thì thế nào :))
nếu tạo 1 class global để lưu các biến toàn cục thì cũng phải chạy đi đặt biến mới dùng đc, dùng cách này thì k cần quan tâm đến mấy vụ đó làm gì :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#] Sử dụng biến mà không cần khởi tạo

Postby anhtuyenbk » Tue 01/12/2009 8:07 am

hdn wrote:ví dụ đang ở trong 1 class này, muốn truy xuất 1 biến nào đó ở đâu đó thì thế nào :))
nếu tạo 1 class global để lưu các biến toàn cục thì cũng phải chạy đi đặt biến mới dùng đc, dùng cách này thì k cần quan tâm đến mấy vụ đó làm gì :D

cái này tốt hơn ko cần nhớ "key" mình đã đặt, kiểu dữ liệu tùy ý, dễ debug hơn. :)) :))
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

Re: [C#] Sử dụng biến mà không cần khởi tạo

Postby hdn » Tue 01/12/2009 8:31 am

hên xui thôi
nói chung là ai thấy hay cứ dùng, ai k thấy hay cứ vứt :))
:|

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#] Sử dụng biến mà không cần khởi tạo

Postby hoangthu1974 » Tue 01/12/2009 8:36 am

hdn wrote:hên xui thôi
nói chung là ai thấy hay cứ dùng, ai k thấy hay cứ vứt :))

Bó chiếu.
Kiếm cái khác hay hơn để giới thiệu đi. Còn phải học nhiều về C# để thấy rằng cái tiện ích này chỉ đem thêm phần rắc rối.


Return to “[.NET] Ứng dụng - Form và Control”

Who is online

Users browsing this forum: No registered users and 1 guest