Tout d'abord, j'ai fait une recherche sur ce sujet et j'ai trouvé les liens suivants sur Stack Overflow :
- Y a-t-il une différence entre `new object()` et `new {}` en c# ?
- Différence entre l'objet a = new Dog() et Dog a = new Dog()
Mais je ne le suis pas. satisfaite avec cette réponse, ce n'est pas bien expliqué (je ne l'ai pas bien compris). En gros, je veux savoir la différence entre new object()
et new {}
. Comment sont-elles traitées au moment de la compilation et de l'exécution ?
Deuxièmement, j'ai le code suivant que j'ai utilisé pour WebMethods
dans mon application simple asp.net
[WebMethod]
[ScriptMethod(UseHttpGet = false)]
public static object SaveMenus(MenuManager proParams)
{
object data = new { }; // here im creating an instance of an 'object' and i have typed it `new {}` but not `new object(){}`.
try
{
MenuManager menu = new MenuManager();
menu.Name = proParams.Name;
menu.Icon = proParams.Icon;
bool status = menu.MenuSave(menu);
if (status)
{
// however, here i'm returning an anonymous type
data = new
{
status = true,
message = "Successfully Done!"
};
}
}
catch (Exception ex)
{
data = new { status = false, message = ex.Message.ToString() };
}
return data;
}
Ainsi, (comme vous pouvez le voir dans les commentaires du code), comment new object(){}
et new {}
des différences ?
Est-ce bien la bonne façon d'écrire le code ? Pouvez-vous suggérer une meilleure méthode pour ce code ?
Je sais, je ne peux pas bien l'expliquer et je demande beaucoup, mais c'est le mieux que j'ai pour le moment.
7 votes
Votre
new{}
crée un type anonyme4 votes
New {} est pour le type anonyme et new object() est juste le constructeur de la classe objet.
0 votes
Ce n'est pas une mauvaise question que j'ai reçue.
-1
pour elle1 votes
@Cybermaxs-Betclic, je sais que le type de résultat est un type anonyme d'un objet mais comment ils sont traités par le système de gestion de l'information.
MSIL
? Cela va-t-il générer un nouveauAnonymouse
code séparé par le compilateur c# ?1 votes
C'était une nouvelle information pour moi. Est-ce que je peux utiliser
new {}
pour créer une instance pour tous les types d'objets ?0 votes
Notez que si vous l'avez déclaré
var a = new { };
etvar o = new object();
Le premier ne peut être attribué qu'à un autre objet anonyme similaire, alors que le second, étant un objet, peut être attribué à n'importe quoi.