C# How does Dictionary work when we initialize a class within as a value? -
assuming have following code:
public static dictionary<string, viewmodelbase> loaddictionary() { dictionary<string, viewmodelbase> tempdictionary = new dictionary<string, viewmodelbase>(); tempdictionary.add("loginview", new loginviewmodel()); tempdictionary.add("signupview", new signupviewmodel()); tempdictionary.add("contactlistview", new contactlistviewmodel()); return tempdictionary; } i refer line:
dictionary<string, viewmodelbase> tempdictionary = new dictionary<string, viewmodelbase>(); does compiler first create constructor (parameterless ctor) , add keyvaluepairs?
if so, how parameter ctor (of loaddictionary)?
and important question relevant post is:
when add keyvaluepairs, values instantiated or wait called , instantiated?
i mean to:
new loginviewmodel() new signupviewmodel() new contactlistviewmodel() edit:
i want know if
tempdictionary.add("loginview", new loginviewmodel()); would executed , call loginviewmodel constructor if did not call "loginview" key in other part of program.
does compiler first creates constructor (parameterless ctor) , add keyvaluepairs?
the compiler doesn't have create anything. dictionary<> has parameterless constructor, you're calling here:
new dictionary<string, viewmodelbase>(); you're invoking constructor, passing no parameters, , getting instance of dictionary<string, viewmodelbase>.
when add keyvaluepairs, values instantiated?
they're instantiated, because you're instantiating them:
new loginviewmodel() like other constructor, creates new instance of class.
note none of code you're showing has class initializers. initializer collection type (like dictionary<>) might this:
dictionary<string, viewmodelbase> tempdictionary = new dictionary<string, viewmodelbase>() { {"loginview", new loginviewmodel()}, {"signupview", new signupviewmodel()}, {"contactlistview", new contactlistviewmodel()} } which compiled equivalent of have:
dictionary<string, viewmodelbase> tempdictionary = new dictionary<string, viewmodelbase>(); tempdictionary.add("loginview", new loginviewmodel()); tempdictionary.add("signupview", new signupviewmodel()); tempdictionary.add("contactlistview", new contactlistviewmodel()); it's not entirely clear confusion on subject, of code create instances of objects.
Comments
Post a Comment