public static void finden Refer (ref int a, ref int b)
in diesem wie finde ich, dass diese Variablen Referenzgröße ist programmatisch ..wie i ihre Art finden Siewie einen Referenz-Datentyp
Antwort
Sie meinen, Sie möchten über die Reflexion wissen, dass die Parameter der Methode by-ref sind?
Sie verwenden MethodBase.GetParameters
die Parameter für die Methode zu bekommen, und dann ParameterInfo.ParameterType
den Typ des Parameters zu finden und Type.IsByRef
zu überprüfen, ob es als Referenz übergeben wird.
Hier ist ein kurzes Beispiel:
using System;
using System.Reflection;
public class Test
{
public static void Refer(ref int a,ref int b)
{
}
static void Main()
{
MethodInfo method = typeof(Test).GetMethod("Refer");
ParameterInfo[] parameters = method.GetParameters();
foreach (ParameterInfo parameter in parameters)
{
Console.WriteLine("{0} is ref? {1}",
parameter.Name,
parameter.ParameterType.IsByRef);
}
}
}
Sie können dies nicht in einer „starken“ Art und Weise für eine Variable a.GetType()
oder typeof(a)
usw. GetType()
findet die Art des von a
Wert verwenden, die ist nur ein int
.
Awe ... einige !! :-) – Cerebrus
siehe auch diese Frage beantwortet von Jon Skeet http://stackoverflow.com/questions/738277/net-reflection-how-to-get-real-type-from-out-parameterinfo auf, wie 'de-referenzieren 'ParameterType, um den Typ zu erhalten, den Sie mit Type.IsAssignableFrom verwenden können – JJS
Seit C# ist stark typisiert, Sie können alle int
Methoden sicher verwenden, da a
und b
ints
sein müssen. Wenn Sie jedoch zur Laufzeit Type
benötigen, verwenden Sie den Operator typeof
.
Funktioniert typeof auf Variablen? Ich dachte, es funktioniere nur bei Typnamen. Ich denke für Variablen müssen Sie a.GetType() –
Sie haben die Eigenschaft IsByRef auf dem ParameterInfo.ParameterType.
- 1. Wie erhalten Sie einen/in einen Dateinamen?
- 2. Wie man einen Javascript Link wie einen HTML-Link verhält?
- 3. Wie man einen TextView wie einen Einstellungs-Voreinstellungskategorie-Header aussieht
- 4. Wie, um einen Wert
- 5. Wie einen bestimmten Link
- 6. Wie durch einen Feldwert
- 7. , wie man einen Vektor
- 8. Wie schneidet einen String
- 9. Wie man einen Speicherhaufen
- 10. wie einen Textview unsichtbar
- 11. Wie mache ich einen Slider wie Javascript?
- 12. Wie implementiere ich einen Sprachwechsler?
- 13. Wie kommentieren Sie einen RFC?
- 14. Wie erstelle ich einen Thread?
- 15. Wie erstellt man einen DataAccessLayer?
- 16. Wie man einen Vollbild-Webview
- 17. Wie man richtig einen Index
- 18. Wie debuggen Sie einen Deadlock?
- 19. Wie fälsche ich einen Validierungsfehler?
- 20. Wie schreibe ich einen Linker
- 21. Wie entpacken Sie einen Color.PackedValue
- 22. Wie verlangsame ich einen Prozess?
- 23. Wie füttere ich einen Platzhalter?
- 24. Wie transformiert man einen CALayer?
- 25. Wie man einen Eintrag ID
- 26. Wie Sie einen Feed crawlen
- 27. Wie man einen Generator durchläuft
- 28. Wie foursquare einen Benutzerstandort bestimmen?
- 29. Wie lösche ich einen Edelsteinpfad?
- 30. Wie bekomme ich einen IXmlNamespaceResolver?
Fragen Sie, ob es eine Möglichkeit gibt zu bestimmen, ob a und b durch Verweis in die Methode übergeben werden, oder ob a und b Referenztypen sind (im Gegensatz zu Werttypen)? –
ja das ist mein Zweifel – Arunachalam