Durante la lettura di un libro su C#, ho trovato codice che utilizza @ per "sovraccaricare" o utilizzare una parola chiave C# come identificativo. Immagino che questa non sia una buona pratica, in quanto conduce all'ambiguità. Ho ragione nel pensarlo, o ci sono momenti in cui questo dovrebbe essere usato?Best practice per l'utilizzo di @ in C#
risposta
In effetti, vale quasi sempre la pena di evitarlo. Il tempo valido valido è utile quando si ha a che fare con una libreria esterna (di un'altra lingua) che ha una classe/etc che sembra essere una parola chiave C#, ma ammetto che ho mai avuto questo problema in realtà. È utile che C# ti consenta di rinominare i nomi degli argomenti dei metodi quando esegui l'override o l'implementazione delle interfacce, in modo da evitare una serie di casi comuni.
Un altro utilizzo (discutibilmente pigro) è nella generazione del codice; se anteponi sempre i campi/variabili/ecc con @theName, non devi preoccuparti di casi speciali. Personalmente, faccio semplicemente un controllo incrociato con un elenco di parole chiave C#/parole chiave contestuali e aggiungo qualcosa come il carattere di sottolineatura.
L'altro uso del simbolo @ (letterali stringa letterale) è @ "molto più utile".
ho usato solo e visto usato con le corde solo, come:
string [email protected]"some funny name";
Penso che sia più utilizzabile quando la stringa contiene \ così che non è necessario evitarlo. –
mai saputo di questo, ma da quello che dici eviterei esso.
L'unica volta che uso @ in C# è per le stringhe pre-formattate.
Penso che intendessi i backslash –
Infatti l'ho fatto;) – Finglas
L'ho usato in ASP.net MVC Visualizzazioni in cui si sta definendo una classe css utilizzando un HtmlHelper.
<%= Html.TextBox("Name", null, new { @class = "form-field" }) %>
Bel esempio ... –
Penso che sia una cattiva idea avere parole chiave riservate come nomi di variabili. IMHO rende il codice meno leggibile. Anche se ci sono alcuni casi in cui potrebbe essere utile. Per esempio in un ASP.NET MVC View si potrebbe scrivere:
<%= Html.TextBox("name", new { @class = "some_css_class" }) %>
lo evito, se non con i metodi di estensione, dove penso che aiuta la leggibilità:
public static void Foo(this object @this)
{
Console.WriteLine(@this.ToString());
}
non credi che quel codice causi più confusione visto che stai già definendo 'questo'? preferirei semplicemente usare una convenzione di denominazione come 'questo oggetto o', come la gente definisce 'i' come il nome della variabile per ints. for (int i = 0; i> ... – David
Non penso che causi alcuna confusione Ricorda, quando definisci un metodo di estensione, uno dei parametri serve come l'equivalente di "this" in un metodo normale Penso che chiamarlo @ enfatizza questo fatto, in particolare quando si guarda il codice –
Ancora meglio sarebbe venire con un nome parametro che in realtà significa qualcosa. :) – Guffa
Si può evitare tranquillamente tutto ciò che crea confusione. :-)
L'unico posto che uso @ è con le stringhe.
Da MSDN: Il vantaggio di @ -quoting è che le sequenze di escape non vengono elaborati, che lo rende facile scrivere, ad esempio, un nome di file completo:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
Come altri hanno ha sottolineato @ -quotare può essere molto utile con le stringhe. Ecco alcuni esempi:
// Not having to escape backslashes.
String a = @"C:\Windows\System32";
// Escaping quotes.
String b = @"The message is ""{0}"".";
// String with embedded newlines.
String c = @"An error occured.
Please try again later.
";
Tendo ad usarlo sempre. Molto più facile quindi sfuggire ai personaggi. – corymathews
- 1. C# sottoclasse Best Practice
- 2. C#: best practice Debug.Print
- 3. C++ Best practice per le costanti
- 4. Best practice per un'applicazione opensource portatile C++
- 5. C# IDisposable Utilizzo: Best Practice
- 6. per best practice di loop
- 7. Best practice per il processo di esecuzione continua in C#
- 8. best practice per l'utilizzo di variabili globali in C#
- 9. best practice di registrazione obiettivo-c
- 10. Best practice per riutilizzare SqlConnection
- 11. MongoDB best practice per referenziamento
- 12. Best practice di RestAngular
- 13. Best practice di confronto
- 14. Best practice per le risorse globali in C#
- 15. Best practice per ambito variabile locale in un callback C++
- 16. Best practice per più asserzioni sullo stesso risultato in C#
- 17. API Best practice per Throttling
- 18. Best practice per compatibilità legacy
- 19. Best practice per denominare sottoclassi
- 20. Registrazione per ASP.NET - Best practice
- 21. Best practice per l'autenticazione dell'abra?
- 22. Best practice per l'animazione Wpf
- 23. commenting code C# visual studio best practice
- 24. Best practice per gestire l'eccezione in SailsJS
- 25. Best practice per caricare file in CakePHP
- 26. Best practice per PK in SQL Server
- 27. Best practice per iniettare applicationContext in Spring3
- 28. Best practice per query SQL in linea
- 29. Selenio, best practice Nunit?
- 30. Best practice per l'internazionalizzazione di un'applicazione Flex?
Grazie Marc! Questo è veramente utile. –
"\\ Is \\ VERY \\ useful" @ "non \ you \ think?" –
Un caso d'uso per @ che ho incontrato è in ASP.NET MVC quando è necessario passare un tipo anonimo con una proprietà con nome di una parola chiave C# come 'Html.Action (..., new {..., @ class = "Test"}); ' –