So che C# ha la parola chiave using
, ma using
elimina automaticamente l'oggetto.Equivalenza di "With ... End With" in C#?
Esiste l'equivalenza di With...End With
in ?
So che C# ha la parola chiave using
, ma using
elimina automaticamente l'oggetto.Equivalenza di "With ... End With" in C#?
Esiste l'equivalenza di With...End With
in ?
C# non ha un costrutto linguaggio equivalente per quello.
questo è vero. Ma se hai una classe con metodi che restituiscono "questo", puoi unire i metodi insieme. – Dlongnecker
Non c'è l'equivalente a Con ... Termina con C#.
Questo è il a comparison chart per te che illustra le differenze tra Visual Basic e C#.
Quella tabella di confronto è fantastica. Sto lavorando sulla transizione a C# da VB e questo sarà molto utile. –
Non esiste una struttura equivalente in C#. Questa è una funzionalità di Visual Basic 6.0/VB.NET.
Non è equivalente, ma questa sintassi funzionerà per voi?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
"Con" non crea istanze, quindi è sbagliato. –
penso l'equivalente delle seguenti VB:
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
sarebbe questo è C#:
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
L'unica vera differenza è che in VB, il l'identificatore non ha un nome "q", ma è semplicemente un identificatore predefinito usato quando si incontra un punto senza un y altro identificatore prima di esso.
Che cosa sono i ricci esterni?Ci dispiace, ma questo non è in alcun modo vicino all'equivalente. È solo un mucchio di chiamate agli incastonatori. – tomfanning
Le parentesi esterne impostano l'ambito della variabile q. A condizione che l'espressione dell'oggetto sia una classe piuttosto che una struct, penso che i codici VB.Net e C# sopra siano quasi esattamente equivalenti. La precedente dichiarazione è un esempio di come si potrebbe usare una dichiarazione with, e quest'ultima affermazione è una traduzione in C#. L'esempio C# usa un paio setter perché è quello che fa l'esempio VB.net scelto arbitrariamente. Il punto essenziale è che "con" equivale a definire una variabile temporanea e quindi usarla ogni volta che viene usato un punto senza identificatore precedente. – supercat
Questo non è un equivalente, è un'alternativa. –
Non c'è un equivalente, ma penso che discutere di una sintassi potrebbe essere interessante!
Mi piace molto;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Altri suggerimenti?
Non riesco a immaginare che aggiungere questa funzione linguistica sarebbe difficile, in sostanza solo un pre-elaborato.
EDIT:
Ero stanco di aspettare per questa funzione, ecco e l'estensione che consente di ottenere un comportamento simile.
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
Utilizzo;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
EDIT: È interessante notare che sembra che mi ha battuto qualcuno al punzone, ancora una volta, con questa "soluzione". Oh bene ..
Anche se non esattamente la stessa cosa, mi piace la tua idea. Se utilizzato con una buona formattazione, può rendere il codice più leggibile. – Rudi
Quindi, hai finito ripetendo il nome della variabile. Puoi fare lo stesso con: 'x = LongInstanceOfPersonVariableName; x.AgeIntVar = 21; // ecc. – LoBo
Ho appena vomitato un po 'in bocca. – JJS
"con" effettivamente esistito ben prima di VB. Esiste in Pascal, per gestire i tipi di record. Non so se Pascal ha preso in prestito l'idea da altrove. – JeffK