Вы можете заменить VB.Net With
, создав быстрое однобуквенное имя переменной. Это на самом деле меньше кода, так как With
также требует End With
позже.
Например, одна вещь, которую мне приходилось делать довольно часто, - это итерация по строкам в таблице данных для отчета стиля управления / прерывания.
В vb.net это может выглядеть так:
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 # будет выглядеть так:
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);
}
Здесь следует отметить, что версия C # на самом деле нуждалась в меньшем наборе текста, потому что VB не мог объединить WITH
с индексом массива и должен был пройти через свойство .Item
для определенных вещей. Здесь нет ничего сложного, но представьте, что в отчете было 20 полей вместо 2 и нужно было разбить 3 элемента вместо 1.
Конечно, вы можете использовать технику, продемонстрированную в C #, и для VB. Но главное, на что стоит обратить внимание, это то, что WITH
на самом деле мало что дает.