• 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

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

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

Gửi bàigửi bởi hdn » CN 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)

Mã: Chọn hết

  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:

Mã: Chọn hết

  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ụ

Mã: Chọn hết

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

Mã: Chọn hết

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

Mã: Chọn hết

  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ụ:

Mã: Chọn hết

  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
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

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

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

Gửi bàigửi bởi tienlbhoc » T.Hai 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/

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

Gửi bàigửi bởi anhtuyenbk » T.Hai 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.

Mã: Chọn hết

  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

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

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

Gửi bàigửi bởi hdn » T.Hai 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

Mã: Chọn hết

  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.  

:|
:|

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

Gửi bàigửi bởi anhtuyenbk » T.Hai 30/11/2009 12:28 pm

hdn đã viết: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

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

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

Gửi bàigửi bởi hoangthu1974 » T.Hai 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ỉ???

Mã: Chọn hết

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

Với

Mã: Chọn hết

  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.

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

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

Gửi bàigửi bởi hdn » T.Hai 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
:|

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

Gửi bàigửi bởi anhtuyenbk » T.Ba 01/12/2009 8:07 am

hdn đã viết: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

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

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

Gửi bàigửi bởi hdn » T.Ba 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 :))
:|

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

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

Gửi bàigửi bởi hoangthu1974 » T.Ba 01/12/2009 8:36 am

hdn đã viết: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.


Quay về “[.NET] Ứng dụng - Form và Control”

Đ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.0 khách