• 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

Viết phương thức có số tham số thay đổi

Các mẹo vặt linh tinh không thuộc các nhóm trên

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

MrB
Thành viên tích cực
Thành viên tích cực
Bài viết: 158
Ngày tham gia: T.Tư 26/03/2008 7:03 pm
Been thanked: 1 time

Viết phương thức có số tham số thay đổi

Gửi bàigửi bởi MrB » T.Hai 14/07/2008 11:48 am

Thủ thuật: Viết phương thức có số tham số thay đổi
Tác giả: MrB
Mô tả: Sử dụng từ khóa params


Mã: Chọn hết

  1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         Console.WriteLine(Sum(1, 2, 3, 4));
  6.         Console.ReadKey();
  7.     }
  8.  
  9.     public static int Sum(params int[] param)
  10.     {
  11.         int sum = 0;
  12.  
  13.         foreach (int i in param)
  14.         {
  15.             sum += i;
  16.         }
  17.  
  18.         return sum;
  19.     }
  20. }


Kết quả:
10
Sửa lần cuối bởi NoBi vào ngày T.Hai 22/09/2008 2:10 pm với 3 lần sửa.
Lý do: Đã sửa lại theo mẫu quy định. Bạn cần chú ý hơn cho các chủ đề sau!



Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Viết phương thức có số tham số thay đổi

Gửi bàigửi bởi vo_minhdat2007 » T.Hai 14/07/2008 1:38 pm

MrB đã viết:Tên bài viết: Viết phương thức có số tham số thay đổi
Tác giả: MrB
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Sử dụng từ khóa params



Mã: Chọn hết

  1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         Console.WriteLine(Sum(1, 2, 3, 4));
  6.         Console.ReadKey();
  7.     }
  8.  
  9.     public static int Sum(params int[] param)
  10.     {
  11.         int sum = 0;
  12.  
  13.         foreach (int i in param)
  14.         {
  15.             sum += i;
  16.         }
  17.  
  18.         return sum;
  19.     }
  20. }


Kết quả:
10

Ý kiến :
Bạn viết thế thì :
1/ Không giải thích thì người biết rồi chẳng thèm quan tâm, người chưa biết cũng chỉ... nhìn mà đoán.
2/ Code C# mà ko kèm theo VB, trong khi đa số trong diễn đàn dùng VB, và từ khoá này của C# và VB khác hẳn
Giải thích (VB) :
Đầu tiên xin nói trước về cấu trúc Function (Sub - Procedure thì tương tự), ở đây nói gọn thôi, có lẽ sẽ lập topic nói kĩ hơn :

Mã: Chọn hết

  1. [ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ]
  2. Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
  3.     [ statements ]
  4.     [ Exit Function ]
  5.     [ statements ]
  6. End Function
  7.  


Giải thích khá nhiều, thôi thi xem ở topic khác.
Về việc số tham số không cố định, ta dùng khoá ParamArray và phải ở cuối phần khai báo tham số, mỗi hàm/thủ tục chỉ được dùng 1 ParamArray, và tên tham số được đặt trước hai dấu () - tức là tham số đó là một mảng động.

Ví dụ hàm SUM :

Mã: Chọn hết

  1.    Function Sum(ByVal ParamArray So() As Integer)
  2.         Dim Temp As Integer
  3.         Temp = 0
  4.         For i As Integer = 0 To So.Length - 1
  5.             Temp += So(i)
  6.         Next
  7.         Return Temp
  8.     End Function


Thân,
Advance Members Group.

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 952
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

Re: Viết phương thức có số tham số thay đổi

Gửi bàigửi bởi NoBi » T.Hai 22/09/2008 2:26 pm

Tặng thêm 1 class xử lý csdl dùng params nữa nè:

Mã: Chọn hết

  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.Collections;
  5. /// <summary>
  6. /// Connect and process database
  7. /// </summary>
  8. public class SqlHelper
  9. {
  10.     public static string ConnectString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
  11.  
  12.     public SqlHelper()
  13.     {
  14.         //
  15.         // Constructor
  16.         //
  17.     }
  18.  
  19.     /// <summary>
  20.     ///
  21.     /// </summary>
  22.     /// <param name="connectionString">The connection string: data source=...;database=...;</param>
  23.     public SqlHelper(String connectionString)
  24.     {
  25.         SqlHelper.ConnectString = connectionString;
  26.     }
  27.  
  28.     /// <summary>
  29.     /// Execute a query string or a store procedure
  30.     /// </summary>
  31.     /// <param name="sql">Query string or store procedure name</param>
  32.     /// <param name="commandType">Execute type: query string or store procedure</param>
  33.     /// <param name="pars">Parameters for store procedure</param>
  34.     /// <returns>DataTable</returns>
  35.     public static DataTable ExecuteQuery(
  36.         string sql,
  37.         CommandType commandType,
  38.         params object[] pars)
  39.     {
  40.         SqlConnection con=new SqlConnection(ConnectString);
  41.         con.Open();
  42.        
  43.         SqlCommand com=new SqlCommand(sql,con);
  44.         com.CommandType=commandType;
  45.  
  46.         for (int i=0;i<pars.Length;i+=2)
  47.         {
  48.             SqlParameter par=new SqlParameter(pars[i].ToString(),pars[i+1]);
  49.             com.Parameters.Add(par);
  50.         }
  51.  
  52.         SqlDataAdapter dad=new SqlDataAdapter(com);
  53.  
  54.         DataSet dst=new DataSet();
  55.         dad.Fill(dst);
  56.         con.Close();
  57.         return dst.Tables[0];
  58.     }
  59.  
  60.     /// <summary>
  61.     /// Execute a query string or a store procedure
  62.     /// </summary>
  63.     /// <param name="sql">Query string or store procedure name</param>
  64.     /// <param name="commandType">Execute type: query string or store procedure</param>
  65.     /// <param name="pars">Parameters for store procedure</param>
  66.     public static void ExecuteNonQuery(
  67.         string sql,
  68.         CommandType commandType,
  69.         params object[] pars)
  70.     {
  71.         SqlConnection con=new SqlConnection(ConnectString);
  72.         con.Open();
  73.        
  74.         SqlCommand com=new SqlCommand(sql,con);
  75.         com.CommandType=commandType;
  76.  
  77.         for (int i=0;i<pars.Length;i+=2)
  78.         {
  79.             SqlParameter par=new SqlParameter(pars[i].ToString(),pars[i+1]);
  80.             com.Parameters.Add(par);
  81.         }
  82.  
  83.         com.ExecuteNonQuery();
  84.         con.Close();
  85.     }
  86. }


Sử dụng:
1/ Với câu SQL trực tiếp, không cần thêm tham số cho params:

Mã: Chọn hết

  1. DataTable dt = SqlHelper.ExecuteQuery(
  2.                 "SELECT * FROM tblName",
  3.                 CommandType.Text);

2/ Với Store Procedure có tham số:

Mã: Chọn hết

  1. dt = SqlHelper.ExecuteQuery("procName",
  2.                             CommandType.StoredProcedure,
  3.                             "@param1", "giá trị 1",
  4.                             "@param2", "giá trị 2",
  5.                             "@param3", "giá trị 3");
:>

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Viết phương thức có số tham số thay đổi

Gửi bàigửi bởi vo_minhdat2007 » T.Tư 24/09/2008 6:39 pm

Code C# khó đọc quá :( . Sao em học C# mãi mà chẳng vô được tí nào :((


Quay về “[.NET] Mẹo vặt khá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.1 khách