You're mostly smoking crack.  The JIT compiler knows how to inline
trivial get/set methods.

However, there's nothing wrong with this approach.  In the future,
optimizers may be able to make better use of readonly hints, to reduce
pointer dereferencing, etc.  But for now, yeah, there is no real
difference between exposing a readonly field, and exposing a trivial get
accessor that just reads a field.  The optimizer is smart.

There is absolutely no difference between a get accessor and a method.
They are the same thing -- the property is just standardized, yummy
syntactic sugar.

Also, when in doubt, read the assembly.  Make sure you do an optimized
release build, of course.

And last but not least -- people, don't be afraid to use public fields,
*when appropriate*.  Pedantic OOPism is just silly.

-- arlie


-----Original Message-----
From: Moderated discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Jeff Varszegi
Sent: Tuesday, October 21, 2003 10:40 AM
To: [EMAIL PROTECTED]
Subject: Re: [ADVANCED-DOTNET] Do properties need a 'holder' keyword?


Here's a question that I had recently, that's sort of related to your
thread.  I was writing code that had to be optimized for speed, and one
of the things I did to speed things up was use immutable objects.  I
made the properties of each of these objects into readonly fields, and
assigned their values from the constructor methods.  I thought that this
would result in faster access times, and in my microbenchmarks (on my
laptop only) it did seem to help slightly.  Am I just smoking crack, or
can this actually offer a performance benefit?  Also, what's the
relative cost of a property get/set versus a method invocation?

I don't think that normal arguments for encapsulation apply here, to
support hiding the variables with property getters.  It's the same to
calling code, yes?  I don't know about compilation differences, though--
I will buy that.  But what if I am able to put a stake in the ground on
certain fields, and say they'll never be changed?

Even though I am presenting this argument, the former Java programmer in
me shudders that I can even suggest making fields public.  Then again,
there aren't such nice things as property getters in Java, which negate
the semantic differences...  Thoughts?

Jeff

P.S.  I would like to start playing around with the IL.  Can anyone
recommend any good starting places, tools, or books?  (Besides the
obvious ildasm.exe, etc.)  Thanks a lot.

--- Thomas Tomiczek <[EMAIL PROTECTED]> wrote:
> What about later extensibility? Do you want all the clients of your
> objects to HAVE to recompile?
>
> Also, some ams have rules. Our rules say: NO PUBLIC VARIABLES. NEVER.
>
> :-)
>
> Leaves us with a lot of properties.
>
> That said - I don't think we need a keyboard,j ust some automatism to
> write this code for us.
>
> Thomas Tomiczek
> THONA Software & Consulting Ltd.
> (Microsoft MVP C#/.NET)
>
> > -----Original Message-----
> > From: Moderated discussion of advanced .NET topics.
> > [mailto:[EMAIL PROTECTED] On Behalf Of Damien
> > Guard
> > Sent: Dienstag, 21. Oktober 2003 12:36
> > To: [EMAIL PROTECTED]
> > Subject: Re: [ADVANCED-DOTNET] Do properties need a 'holder'
keyword?
> >
> > >I find it is very common to have a private field that
> > properties use to
> > hold there value, like
> > >get{return holder;}set{holder=value;}
> >
> > If that's all you are doing in a property's methods then why not
> > remove the property and make the private field public?
> >
> > [)amien
> >
> > ===================================
> > This list is hosted by DevelopMentor(r)  http://www.develop.com NEW!

> > ASP.NET courses you may be interested in:
> >
> > 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> > http://www.develop.com/courses/2daspdotnet
> >
> > Guerrilla ASP.NET, 13 Oct 2003, in Boston
> > http://www.develop.com/courses/gaspdotnet
> >
> > View archives and manage your subscription(s) at
> > http://discuss.develop.com
> >
> >
>
> ===================================
> This list is hosted by DevelopMentorR  http://www.develop.com NEW!
> ASP.NET courses you may be interested in:
>
> 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> http://www.develop.com/courses/2daspdotnet
>
> Guerrilla ASP.NET, 13 Oct 2003, in Boston
> http://www.develop.com/courses/gaspdotnet
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com

===================================
This list is hosted by DevelopMentorR  http://www.develop.com NEW!
ASP.NET courses you may be interested in:

2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet

Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet

View archives and manage your subscription(s) at
http://discuss.develop.com

===================================
This list is hosted by DevelopMentorŪ  http://www.develop.com
NEW! ASP.NET courses you may be interested in:

2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet

Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to