J'ai actuellement quelque chose que je veux passer un textbox.text par ref. Je ne veux pas passer la zone de texte entière et je veux que la fonction change le texte avec renvoyer l'autre variable. Y a-t-il un moyen de passer le Textbox.text par ref et de le changer à l'intérieur de la fonction? Que voulez-vous dire passer le "whole" textbox?Passer par Ref Textbox.Text
Répondre
Vous ne pouvez pas passer une propriété par ref, seulement un champ ou une variable.
De MSDN:
propriétés ne sont pas des variables. Ce sont en fait des méthodes, et ne peuvent donc pas être transmises en tant que paramètres ref.
Vous devez utiliser une variable intermédiaire:
string tmp = textBox.Text;
int x = function(1, 2, ref tmp);
textBox.Text = tmp;
thats ce que je pensais. Merci. – Hazior
Si votre signature est public int function(int a, int b, TextBox textBox)
alors tout ce que vous passez est une référence, ce qui n'est pas beaucoup de données du tout. Si vous apportez votre signature public int function(int a, int b, ref string text)
, vous rencontrez toujours un problème si vous transmettez textBox.Text car vous utiliserez toujours une copie du champ de sauvegarde de la propriété Text afin que votre méthode ne se mette pas à jour.
Pourquoi tu ne veux pas passer toute la zone de texte? il est en passe ... ref comme:
public int function(int a, int b, TextBox textb)
{
//do something
if (a + b > 50)
{
textb.text = "Omg its bigger than 50!";
}
return (a + b);
}
Si vous passez la référence TextBox, la méthode sera également en mesure de modifier d'autres propriétés de la TextBox ... –
Je suppose que le problème est que vous essayez de passer TextBox.Text
au second paramètre de votre fonction (en supposant que vous avez modifié pour prendre la chaîne par référence). Il est parfaitement valide de passer des chaînes par référence, mais les propriétés ne peuvent pas être transmises par référence. Le mieux que vous pouvez faire est assigner le texte à une autre chaîne, passez que, puis définissez le texte de nouveau dans la zone de texte après:
public int function(int a, int b, ref string text)
{
//do something
if (a + b > 50)
{
text = "Omg its bigger than 50!";
}
return (a + b);
}
string text = TextBox.Text;
function(ref text);
TextBox.Text = text;
Vous ne pouvez pas passer une propriété par ref. Vous pouvez copier la propriété .Text
à une chaîne, puis passer par cette chaîne ref:
void foo()
{
string temp = MyTextBox.Text;
int result = refFunction(ref temp);
MyTextBox.Text = temp;
}
int refFunction(ref string text)
{ ... }
- 1. Passant Par ref et out
- 2. WPF TextBox.Text avec MultiBinding
- 3. Passer des références de contrôle comme paramètres ref
- 4. Comment passer des tableaux gérés par ref à une bibliothèque non gérée?
- 5. C#: Comment passer null à une fonction attend une ref?
- 6. Passer dans REF dans la base de données Oracle
- 7. passant enumant par ref en java
- 8. Sql DataBinding contre la lecture Label/TextBox.text
- 9. Textbox.text ne se remplit pas, C#
- 10. ASP.NET MVC: ref long? Paramètre
- 11. TextBox.Text Fuite de mémoire dans l'application WPF
- 12. Avant les pointeurs/ref
- 13. Passer par référence impossible?
- 14. C++ passer par pointeur
- 15. passer tableau par référence
- 16. JList passer par
- 17. REF CURSOR par rapport à la fonction TABLE dans Oracle
- 18. Initialisation de la liste Python (par problème ref)
- 19. Passing types de référence par ref - Flex/Actionscript
- 20. bibtex et label/ref
- 21. Passer un ref ou un pointeur vers un type géré en tant qu'argument en C++. Net
- 22. paramètres ref Mocking
- 23. PHP Oracle Ref Cursor
- 24. accès DB Ref MongoDB
- 25. ref vs en C#
- 26. C# lambda ref sur
- 27. C# ref question encore?
- 28. Désérialiser $ ref et $ id
- 29. Comment passer la page en tant que paramètre ref à une fonction
- 30. Comment passer outre la valeur du modèle MVC2 pour les biens de modèle pour la valeur TextBox.text
Cela ressemble à un problème avec votre conception pour moi ... – hackerhasid