Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
Il modello "build to order" di PCSpecialist permette di selezionare una struttura base per un sistema, personalizzandolo in base alle specifiche esigenze con una notevole flessibilità di scelta tra i componenti. Il modello Lafité 14 AI AMD è un classico notebook clamshell compatto e potente, capace di assicurare una elevata autonomia di funzionamento anche lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-06-2010, 14:56   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[C# 2.0] inserire stringhe in posizione {0}

Ciao a tutti

Ho una label così composta:

Codice:
X:{0}-Y:{0}
Durante l'esecuzione del programma, come posso inserire i valori di X e Y
evitando di usare un banale string.Insert ?

Grazie a tutti

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2010, 17:09   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Ma almeno fosse
X:{0}-Y:{1}

potresti "sostituire" {0} con quello che vuoi li', e poi {1} con quello che vuoi la'...
Con varie soluzioni, dalla piu' elegante e veloce a quella piu' lenta e lunga.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2010, 17:35   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ma almeno fosse
X:{0}-Y:{1}

potresti "sostituire" {0} con quello che vuoi li', e poi {1} con quello che vuoi la'...
Con varie soluzioni, dalla piu' elegante e veloce a quella piu' lenta e lunga.
Ciao

Beh, penso che essendo una label, almeno il testo di base io possa cambiarlo senza far arrabbiare nessuno.

La strada più lenta e lunga credo di averla percorsa perciò mi è stato chiesto di non utilizzare un metodo string.Insert()

Specifico un pò più di dettagli:

la label è un oggetto di tipo StatusStripLabel che, ovviamente, fa parte di un oggetto StatusStrip.

Sul form è presente una griglia, e ho il compito di tracciare le coordinate relative a riga - colonna al passaggio del mouse sulla griglia.

Al momento la soluzione che ho implementato è questa:

Codice:
int nRow = 0;
int nCol = 0;

private void kGrid_MouseMove(object sender, MouseEventArgs e)
{
    DataGridView.HitTestInfo hti = kGrid.HitTest(e.X, e.Y);
    if(hti.RowIndex >= 0)
    {
       nRow = hti.RowIndex + 1;
       nCol = hti.ColumnIndex + 1;
       StringBuilder sb = new StringBuilder();
       sb.Append("X:");
       sb.Append(nRow.ToString());
       sb.Append(" - ");
       sb.Append("Y:");
       sb.Append(nCol.ToString());
       coordStatusLabel.Text = sb.ToString();
      }
}
}
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2010, 17:45   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Allora direi:
Codice:
string.Format("X:{0}-Y:{1}", x, y);
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2010, 18:00   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Allora direi:
Codice:
string.Format("X:{0}-Y:{1}", x, y);
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2010, 18:13   #6
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ok

Grazie come sempre per il prezioso aiuto !!

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2010, 19:58   #7
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
così è un pò meglio e eviti quelle due variabili orrende che non servono a nessuno

Codice:
private void kGrid_MouseMove(object sender, MouseEventArgs e)
        {
            if (kGrid.HitTest(e.X, e.Y).RowIndex < 0) return;
            coordStatusLabel.Text = string.Format("X:{0} - Y:{1}", kGrid.HitTest(e.X, e.Y).RowIndex + 1,
                                                  kGrid.HitTest(e.X, e.Y).ColumnIndex + 1);
        }
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2010, 20:10   #8
lock cmpxchg8b %ebx
Member
 
Iscritto dal: Apr 2010
Messaggi: 56
Quote:
Originariamente inviato da sneeze Guarda i messaggi
così è un pò meglio e eviti quelle due variabili orrende che non servono a nessuno

Codice:
private void kGrid_MouseMove(object sender, MouseEventArgs e)
        {
            if (kGrid.HitTest(e.X, e.Y).RowIndex < 0) return;
            coordStatusLabel.Text = string.Format("X:{0} - Y:{1}", kGrid.HitTest(e.X, e.Y).RowIndex + 1,
                                                  kGrid.HitTest(e.X, e.Y).ColumnIndex + 1);
        }
Peccato che il resto del tuo codice sia peggiore... esegue il metodo HitTest 3 volte invece di 1.
lock cmpxchg8b %ebx è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2010, 20:57   #9
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
vero, lo esegue 3 volte.
preferisco se posso risparmiarmi 2 variabili int ,una HitTestInfo e uno StringBuilder. cmq il concetto era evitare di dichiarare variabili inutili, se proprio ti da fastidio eseguiro 3 volte uno hittest puoi tradurla così

Codice:
private void kGrid_MouseMove(object sender, MouseEventArgs e)
        {
            var temp = kGrid.HitTest(e.X, e.Y);
            if (temp.RowIndex < 0) return;
            coordStatusLabel.Text = string.Format("X:{0} - Y:{1}", temp.RowIndex + 1,
                                                  temp.ColumnIndex + 1);
        }
e hai comunque risparmiato 2 int inutili :

int nRow = 0;
int nCol = 0;

uno stringBuilder:

StringBuilder sb;

e hai usato l' hitTest una volta sola.
Contento?
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 01:28   #10
lock cmpxchg8b %ebx
Member
 
Iscritto dal: Apr 2010
Messaggi: 56
Quote:
Originariamente inviato da sneeze Guarda i messaggi
cmq il concetto era evitare di dichiarare variabili inutili, se proprio ti da fastidio eseguiro 3 volte uno hittest puoi tradurla così
lock cmpxchg8b %ebx è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 09:27   #11
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
se mi dici cosa non ti è chiaro te lo posso spiegare
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 13:17   #12
lock cmpxchg8b %ebx
Member
 
Iscritto dal: Apr 2010
Messaggi: 56
Quote:
Originariamente inviato da sneeze Guarda i messaggi
se mi dici cosa non ti è chiaro te lo posso spiegare
Non mi è chiaro secondo quale criterio la variabile sarebbe inutile, visto che uno degli usi principali delle variabili è proprio quello di salvare un valore da usare più volte.
nRow, nCol e sb sono senza dubbio inutili (in questo caso). Ma hti proprio no.
lock cmpxchg8b %ebx è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 15:57   #13
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Quote:
Originariamente inviato da lock cmpxchg8b %ebx Guarda i messaggi
Non mi è chiaro secondo quale criterio la variabile sarebbe inutile, visto che uno degli usi principali delle variabili è proprio quello di salvare un valore da usare più volte.
nRow, nCol e sb sono senza dubbio inutili (in questo caso). Ma hti proprio no.
Difatti hti è l'unica che ho riutilizzato anche io, anche se la mia si chiama temp.
Dipende poi dal metodo in gioco, spesso è più conveniente chiamare più volte um metodo anzichè dichiarare una variabile. Dipende.
Le altre inoltre sono assolutamente inutili, se uno non lo vede a colpo d'occhio vuol dire che non ha molta esperienza. Dichiarare variabili inutili è indice di scarsa programmazione, scarsa ottimizzazione del codice e scarsa leggibilità futura.
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 16:25   #14
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Secondo me bisogna trovare un giusto compromesso con la leggibilità. Togliendo tutte le variabili inutili si rischia di non far capire niente a chiunque altro legga il codice.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 16:44   #15
lock cmpxchg8b %ebx
Member
 
Iscritto dal: Apr 2010
Messaggi: 56
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Difatti hti è l'unica che ho riutilizzato anche io, anche se la mia si chiama temp.
Parlavo del tuo primo spezzone di codice.
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Dipende poi dal metodo in gioco, spesso è più conveniente chiamare più volte um metodo anzichè dichiarare una variabile. Dipende.
Sicuramente non in questo caso. Fammi un esempio.
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Dichiarare variabili inutili è indice di scarsa programmazione, scarsa ottimizzazione del codice e scarsa leggibilità futura.
Molto peggio chiamare un metodo come HitTest per ben 3 volte soltanto per avere 1 riga di codice in meno. MOLTO peggio.
lock cmpxchg8b %ebx è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:27   #16
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Ripeto che dichiarare variabili inutili è indice di scarsa programmazione, scarsa ottimizzazione del codice e scarsa leggibilità futura.
Per quanto riguarda il mio codice ho tolto anche io le 3 chiamate al metodo. Ed ho comunque risparmiato la dichiarazione di 3 variabili inutili.
Inoltre ti posso assicurare che se tu avessi a che fare con liste di dati di una certa dimensione (parlo di liste Entity oltre le 100000 ad esempio) molto spesso, a discapito di un pò di tempo cpu perso, è molto meglio chiamare metodi tipo un orderby o un sort più volte pur di risparmiare l'orrore di copiare ogni volta un oggetto di quel tipo in un ulteriore variabile enorme.
Inoltre non dimentichiamoci che il metodo dal quale siamo partiri risponde alla chiamata di un evento di mouse move, questo vuol dire che viene chiamato una gran quantità di volte, e ogni volta si dovrebbe istanziare tutte quelle variabili inutili? per carità.
è vero che finiscono in garbage collection, ma è anche vero che la garbage del .net le pulisce ad ogni ciclo di garbage e non subito, quindi è un dispendio enorme di risorse per aggiornare una label. follia.
Non vedere che quelle 3 variabili in realtà ne generano a runtime quintali è un altro classico esempio di inesperienza.
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:32   #17
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Secondo me bisogna trovare un giusto compromesso con la leggibilità. Togliendo tutte le variabili inutili si rischia di non far capire niente a chiunque altro legga il codice.
Per questo è sempre buona norma commentare il codice, non c'è miglior modo per documentare quello che si scrive. Oltre ovviamente a cercare di rendere il codice leggibile, fidati che su progetti di una certa dimensione meno dichiarazioni si hanno e più si capisce. Altrimenti poi ti trovi ogni due secondi a cercare le variabili in giro per il sorgente. Cose del tipo "e questa variabile cos'è??? dove l'ha dichiarata??? aspetta che la cerco... a si eccola ok è un int, ma aspetta, sono sicuro che non la tocchi mai prima di arrivare dove stavo leggendo???? fammi scorrere bene il codice.... ok torno di là..... oh no e quest'altra???" ecc ecc ecc
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:36   #18
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Ripeto che dichiarare variabili inutili è indice di scarsa programmazione, scarsa ottimizzazione del codice e scarsa leggibilità futura.
Per quanto riguarda il mio codice ho tolto anche io le 3 chiamate al metodo. Ed ho comunque risparmiato la dichiarazione di 3 variabili inutili.
Inoltre ti posso assicurare che se tu avessi a che fare con liste di dati di una certa dimensione (parlo di liste Entity oltre le 100000 ad esempio) molto spesso, a discapito di un pò di tempo cpu perso, è molto meglio chiamare metodi tipo un orderby o un sort più volte pur di risparmiare l'orrore di copiare ogni volta un oggetto di quel tipo in un ulteriore variabile enorme.
Inoltre non dimentichiamoci che il metodo dal quale siamo partiri risponde alla chiamata di un evento di mouse move, questo vuol dire che viene chiamato una gran quantità di volte, e ogni volta si dovrebbe istanziare tutte quelle variabili inutili? per carità.
è vero che finiscono in garbage collection, ma è anche vero che la garbage del .net le pulisce ad ogni ciclo di garbage e non subito, quindi è un dispendio enorme di risorse per aggiornare una label. follia.
Non vedere che quelle 3 variabili in realtà ne generano a runtime quintali è un altro classico esempio di inesperienza.
Scusa riguardando l'originale ho visto che i due int sono dichiarati fuori dal metodo. magnifico..... questa sì che è rpogrammazione.... a quando le variabili static e i global per aggiornare una label??? eheheheheheh
sneeze è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:42   #19
lock cmpxchg8b %ebx
Member
 
Iscritto dal: Apr 2010
Messaggi: 56
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Per quanto riguarda il mio codice ho tolto anche io le 3 chiamate al metodo.
Si, dopo che te l'ho fatto notare io.
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Inoltre ti posso assicurare che se tu avessi a che fare con liste di dati di una certa dimensione (parlo di liste Entity oltre le 100000 ad esempio) molto spesso, a discapito di un pò di tempo cpu perso, è molto meglio chiamare metodi tipo un orderby o un sort più volte pur di risparmiare l'orrore di copiare ogni volta un oggetto di quel tipo in un ulteriore variabile enorme.
Non so perché tu stia spostando la discussione sulle liste ed i metodi di IEnumerable (o meglio, lo so, ma preferisco evitare), ma vorrei ricordarti che stavamo parlando di HitTest.
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Inoltre non dimentichiamoci che il metodo dal quale siamo partiri risponde alla chiamata di un evento di mouse move, questo vuol dire che viene chiamato una gran quantità di volte, e ogni volta si dovrebbe istanziare tutte quelle variabili inutili? per carità.
Quote:
Originariamente inviato da sneeze Guarda i messaggi
è vero che finiscono in garbage collection, ma è anche vero che la garbage del .net le pulisce ad ogni ciclo di garbage e non subito, quindi è un dispendio enorme di risorse per aggiornare una label. follia.
Quote:
Originariamente inviato da sneeze Guarda i messaggi
Non vedere che quelle 3 variabili in realtà ne generano a runtime quintali è un altro classico esempio di inesperienza.
Hai qualche serio problema di comprensione?
Quote:
Originariamente inviato da lock cmpxchg8b %ebx Guarda i messaggi
nRow, nCol e sb sono senza dubbio inutili
lock cmpxchg8b %ebx è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 18:26   #20
sneeze
Senior Member
 
L'Avatar di sneeze
 
Iscritto dal: Aug 2001
Messaggi: 1049
vabbhe dai chiudiamo la questione mi pare tu la voglia spostare in polemica e non mi interessa.
Cmq il mio era solo un esempio che mi avevi chiesto.

Ad ogni modo hai ragione su tutto basta che non ti scaldi per niente.
amici come prima
ciao
sneeze è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Afeela è morta: chiusa definitiva...
Intel BOT altera i risultati, Geekbench ...
Intel e AMD faticano a soddisfare la dom...
Microsoft e NVIDIA insieme per dare una ...
Ring rinnova l'intera gamma video: 4K su...
Recensione Galaxy Buds4 Pro: le cuffie S...
Spotify si arricchisce ancora: arriva So...
I digital twin di AVEVA a supporto delle...
Iliad non si ferma: clienti in crescita ...
XuanTie C950, il chip IA di Alibaba basa...
Volkswagen richiama 94.000 auto elettric...
Le nuove LaserJet di HP portano la critt...
FSR 4 gira sulla GPU di PS5 Pro, ma non ...
Intel rinnova l'offerta professionale: C...
Galaxy A57 5G e A37 5G ufficiali: l'IA d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v