Perché gli operatori di assegnazione (+ =, - =, * =,/=) sono sovraccaricabili in VB.NET?Perché gli operatori di assegnazione non sono sovraccaricabili in VB.NET?
risposta
Forse this è il loro ragionamento:
Grazie per il suggerimento! Non è consentito sovraccaricare l'operatore di assegnazione per un tipo poiché non esiste attualmente alcun modo per assicurarsi che altri linguaggi o lo stesso .NET Framework onorino lo operatore di assegnazione. L'unica alternativa è limitare i tipi di che possono sovraccaricare l'operatore di assegnazione, ma abbiamo ritenuto che sarebbe troppo restrittivo per essere generalmente utile.
Grazie! Paul Vick Technical Lead, VB
C'è qualcosa chiamato 'Restringimento' e 'ampliamento', che permette di definire convertitori espliciti ed impliciti da un tipo ad un altro, vale a dire
Dim y as MyClass1
Dim x as MyClass2 = y
ma questo non significa lascia che cambi l'operatore di assegnazione per assegnare un'istanza della stessa classe, solo convertendo altre classi.
Vedi How to: Define a Conversion Operator
Class MyClass1
Public Shared Widening Operator CType(ByVal p1 As MyClass1) As MyClass2
End Operator
End Class
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
operatori assegnazione non può essere sovraccaricato, ma + =, per esempio, viene valutata utilizzando +, che può essere sovraccaricato .
=, ., ?:, ??, ->, =>, f(x), as, checked, unchecked, default, delegate, is, new, sizeof, typeof
Questi operatori non può essere sovraccaricato.
Con lo stesso conversion operators:
struct MyType1
{
...
public static explicit operator MyType1(MyType2 src) //explicit conversion operator
{
return new MyType1 { guts = src.guts };
}
}
Ticket chiuso come "Will not Fix" nel 2004 - rofl. Spero che abbiano rivisitato il suggerimento. – Alain
Lo fa? http://stackoverflow.com/questions/292676/is-there-a-workaro-for-overloading-the-assignment-operator-in-c – Alain
C# non supporta gli overload dell'operatore: http://msdn.microsoft. com/it-it/library/8edha89s.aspx.Una soluzione ish consiste nel sovraccaricare l'operatore '+', poiché + = lo usa, ma non è ancora possibile sovraccaricare '='. – Alain
- 1. Perché gli operatori di assegnazione della classe genitore non sono accessibili dalla classe derivata oggetti
- 2. Cosa sono gli operatori sollevati?
- 3. Perché gli operatori di confronto Javascript sono matematicamente incoerenti?
- 4. Gli operatori in linea sono buoni?
- 5. Operatori assegnazione stringa Javascript
- 6. Comprendere operatori di assegnazione CComBSTR
- 7. Operatori condizionali di assegnazione esistenziali in Coffeescript
- 8. Perché gli operatori di divisione (/) si comportano diversamente in VB.NET e C#?
- 9. Assegnazione di uno std :: shared_ptr negli operatori di assegnazione
- 10. Perché le parentesi tonde non sono necessarie per gli atomi che sono operatori con priorità alta?
- 11. Perché std :: vector ha due operatori di assegnazione?
- 12. CUDA: Perché gli operatori bit a bit sono talvolta più veloci degli operatori logici?
- 13. Quali sono gli operatori di dominio disponibili in Openerp/Odoo?
- 14. Se gli operatori di Ascii sono definibili, perché non i simboli Unicode?
- 15. Gli operatori Perl sono "scoperti" e non progettati?
- 16. Perché è necessario utilizzare gli operatori di spostamento in java?
- 17. D operatori che non sono in C++
- 18. sovraccarico + =, +, == e = gli operatori
- 19. Quali sono gli operatori e i comandi supportati in FQL?
- 20. Gli elementi ListView non sono selezionabili. perché?
- 21. Perché gli array non sono espandibili?
- 22. Perché gli operatori di confronto std :: vector e std :: string sono definiti come funzioni modello?
- 23. Eliminazione dei costruttori di copie e copia degli operatori di assegnazione. Quali di questi sono essenziali?
- 24. Ramificazione degli operatori di assegnazione con valori anziché riferimenti
- 25. Come utilizzerei gli operatori di dimensioni delete/delete [] e perché sono migliori?
- 26. Informazioni sugli operatori di assegnazione JavaScript e PHP: perché i diversi risultati?
- 27. Perché nessun errore in VB.NET
- 28. Perché gli operatori a volte sono autonomi ea volte metodi di classe?
- 29. Gli operatori resque non si avviano correttamente
- 30. Perché gli elenchi di differenze non sono un'istanza di pieghevole?
@ Mr.Disappointment - Yup, ha scoperto che io stesso. Potrebbe indicare dove in quell'articolo si dice perché gli operatori di assegnazione non siano sovraccarichi? – user1351569
@ Mr.Disappointment - Pensavo che forse avresti letto qualcosa che mi ero perso. – user1351569
Aggiunti alcuni elementi sui convertitori impliciti/espliciti che potrebbero essere utili con qualsiasi cosa si stia tentando di fare. – Alain