Bạn có thể thay thế With
của VB.Net bằng cách tạo tên biến chữ cái nhanh. Nó thực sự ít mã hơn, vì With
cũng yêu cầu một số End With
sau này.
Ví dụ: một điều tôi thường cần thực hiện thường xuyên là lặp qua các hàng trong một dữ liệu có thể lập biểu cho báo cáo kiểu kiểm soát/ngắt.
Trong vb.net, mà có thể trông như thế này:
Dim CurCustomerName As String
Dim CustomerSalesTotal As Decimal
Dim ds As DataSet = GetReportData()
With ds.Tables(0).Rows
Dim i As Integer = 0
While i < .Count
''//{
CurCustomerName = .Item(i)("CustName")
CustomerSalesTotal = 0
PrintHeaderLine(CurCustomerName)
While i < .Count AndAlso CurCustomerName = .Item(i)("CustName")
''//{
PrintItemLine(.Item(i)("OrderTotal"))
CustomerSalesTotal += .Item(i)("OrderTotal")
i+= 1
End While ''//}
PrintSubTotalLine(CustomerSalesTotal)
End While ''//}
End With
C# sẽ trông như thế này:
string CurCustomerName;
Decimal CustomerSalesTotal;
DataSet ds = GetReportData();
DataRowCollection r = ds.Tables[0].Rows;
int i=0;
while (i<r.Count)
{
CurCustomerName = r[i]["CustName"];
CustomerSalesTotal = 0;
PrintHeaderLine(CurCustomerName);
while (i<r.Count && CurCustomerName == r[i]["CustName"])
{
PrintItemLine(r[i]["OrderTotal"]);
CustomerSalesTotal += r[i]["OrderTotal"];
i++;
}
PrintSubTotalLine(CustomerSalesTotal);
}
Những điều cần chú ý ở đây là # phiên bản C thực sự cần thiết ít gõ , vì VB không thể kết hợp WITH
với chỉ mục mảng và phải đi qua thuộc tính .Item
cho một số thứ nhất định. Nó không phải là một vấn đề lớn ở đây, nhưng hãy tưởng tượng nếu báo cáo có 20 trường thay vì 2 và phải chia nhỏ 3 mục thay vì 1.
Tất nhiên, bạn cũng có thể sử dụng kỹ thuật này trong VB cho VB. Nhưng điều quan trọng cần lưu ý là WITH
không thực sự mang lại cho bạn nhiều.
Nguồn
2009-01-09 22:17:16
VB yêu thích của tôi "thêm" là mệnh đề khi có ngoại lệ - ví dụ: "catch x as my_exception khi x.code = 100" hoặc "catch x as exception khi retries = 3" – gbjbaanb