Vengo da uno sfondo C++. Questa domanda è stata posta prima, ma prova come potrei non riuscire a trovare la risposta. Diciamo che ho:Ottieni una stringa per fare riferimento a un'altra in C#
string[] ArrayOfReallyVeryLongStringNames = new string[500];
ArrayOfReallyVeryLongStringNames[439] = "Hello world!";
Posso creare una stringa che fa riferimento al di sopra (nessuno di questi sarà la compilazione):
string a = ref ArrayOfReallyVeryLongStringNames[439]; // no compile
string a = &ArrayOfReallyVeryLongStringNames[439]; // no compile
Capisco che le stringhe sono immutabili in C#. Capisco anche che non è possibile ottenere l'indirizzo di un oggetto gestito.
mi piacerebbe fare questo:
a = "Donkey Kong"; // Now ArrayOfReallyVeryLongStringNames[439] = "Donkey Kong";
Ho letto la domanda Stack Overflow Make a reference to another string in C# che ha una risposta eccellente, ma ad una domanda leggermente diversa. NON voglio passare questo parametro a una funzione per riferimento. So come usare la parola chiave "ref" per passare un parametro per riferimento.
Se la risposta è "Non è possibile farlo in C#", c'è una soluzione comoda?
MODIFICA: Alcune risposte indicano che la domanda non era chiara. Lo chiedo in un modo diverso. Diciamo che dovevo manipolare tutti gli elementi dell'array con nome lungo originale che hanno indici primi. Mi piacerebbe aggiungere alias alias ... [2], Array ... [3], Array ... [5], ecc. A un elenco. Quindi, modifica gli elementi nell'elenco usando un ciclo "for" (magari passando l'elenco appena creato a una funzione).
In C# la parola chiave "using" crea un alias in una classe o uno spazio dei nomi. Dalle risposte, sembra che non sia possibile creare un alias in una variabile.
La risposta, purtroppo, * è * "non puoi farlo", ma potresti andare "non sicuro" e accedere ai puntatori. – Jon
È possibile creare un oggetto wrapper contenente una stringa da manipolare. – juharr
Qual è il contesto qui? Perché non vuoi usare ArrayOfReallyVeryLongStringNames [439] direttamente? – qxg