Puede reemplazar el With
de VB.Net creando un nombre de variable de una sola letra. De hecho, es menos código, ya que With
también requiere un End With
más adelante.
Por ejemplo, una cosa que solía necesitar hacer con bastante frecuencia era iterar sobre las filas en una tabla de datos para un informe de estilo de control/corte.
En vb.net, que podría tener este aspecto:
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
El C# sería el siguiente:
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);
}
Lo que hay que notar aquí es que la versión # C que se necesita teclear menos , porque el VB no podía combinar WITH
con el índice de matriz, y tenía que pasar por la propiedad .Item
para ciertas cosas. No es gran cosa aquí, pero imagínese si el informe tuviera 20 campos en lugar de 2 y tuviera que dividirse en 3 elementos en lugar de 1.
Por supuesto, también podría usar la técnica demostrada en C# para VB. Pero lo principal a tener en cuenta es que WITH
realmente no le da mucho.
mi favorito VB "extra" es la cláusula cuándo excepciones - por ejemplo. "catch x as my_exception when x.code = 100", o "catch x as exception when retries = 3" – gbjbaanb