Comment puis-je évaluer C

Je peux faire un eval('something()'); pour exécuter le code dynamiquement en JavaScript. Existe-t-il un moyen pour moi de faire la même chose en C

请先 登录 后评论

6 réponses

GateKiller

Vous pourriez le faire avec une fonction prototype :

void something(int i, string P1) {
    something(i, P1, String.Empty);
}

void something(int i, string P1, string P2) {
    something(i, P1, P2, String.Empty);
}

void something(int i, string P1, string P2, string P3) {
    something(i, P1, P2, P3, String.Empty);
}

et ainsi de suite...

请先 登录 后评论
Karl Seguin

Pas vraiment. Vous pouvez utiliser la réflexion pour obtenir ce que vous voulez, mais ce ne sera pas aussi simple qu'en Javascript. Par exemple, si vous souhaitez définir le champ privé d'un objet sur quelque chose, vous pouvez utiliser cette fonction :

protected static void SetField(object o, string fieldName, object value)
{
   FieldInfo field = o.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic);
   field.SetValue(o, value);
}
请先 登录 后评论
Lasse Vågsæther Karlsen

Malheureusement, C

请先 登录 后评论
MojoFilter

Tout cela fonctionnerait certainement. Personnellement, pour ce problème particulier, j'adopterais probablement une approche un peu différente. Peut-être quelque chose comme ça :

class MyClass {
  public Point point1, point2, point3;

  private Point[] points;

  public MyClass() {
    //...
    this.points = new Point[] {point1, point2, point3};
  }

  public void DoSomethingWith(int i) {
    Point target = this.points[i+1];
    // do stuff to target
  }
}

Lorsque vous utilisez des modèles comme celui-ci, vous devez faire attention à ce que vos données soient stockées par référence et non par valeur. En d'autres termes, ne faites pas cela avec des primitives. Vous devez utiliser leurs grands homologues de classe gonflés.

J'ai réalisé que ce n'était pas exactement la question, mais la question a été assez bien répondue et j'ai pensé qu'une approche alternative pourrait peut-être aider.

请先 登录 后评论
Sébastien Ros - MSFT

Je ne sais pas si vous voulez absolument exécuter C

请先 登录 后评论
Xodem

Vous pouvez également implémenter un navigateur Web, puis charger un fichier html contenant du javascript.

Ensuite, vous optez pour la méthode document.InvokeScript sur ce navigateur. La valeur de retour de la fonction eval peut être récupérée et convertie en tout ce dont vous avez besoin.

Je l'ai fait dans plusieurs projets et cela fonctionne parfaitement.

J'espère que ça aide

请先 登录 后评论
  • 12 abonnés
  • 0 favoris,522 Feuilleter
  • Adhip Gupta posée à 2023-03-17 19:52