473,387 Members | 1,624 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

What is "Protected" doing?

This is an issue regarding what exactly is accomplished by using "Protected"
when defining a variable. It seems it does much more than just applying
Protected status to a variable.

I have an ascx control named HeadingBar. I have dragged it onto an aspx
page.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar

This defines HeadingBar1 but, of course, does not instantiate it so
HeadingBar1 is nothing. (no suprise here)
If I use the following statement.....

Protected HeadingBar1 as HeadingBar

This not only defines HeadingBar1 but it also instantiates it as
ASP.HeadingBar_ascx. Here it seems that "Protected" is doing more than
giving a variable protected status - it's instantiating an instance!
Everything works fine when this is used.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar = new HeadingBar

It instantiates HeadingBar1 as myProjectName.HeadingBar! Here it's an
object of my project. But when the statement HeadingBar1.Title = "This is
the heading" is executed the Title property in the ascx control throws an
exception on the Set statement of that property saying that lblTitle.text is
not instantiated.

It seems "Protected" is performing some functionality that I cannot find in
the docs. Can anyone explain this?

Thanks,
T


May 18 '06 #1
4 1802
I think you're confusing accessibility with instantiation. The variable is
accessible, or visible, to the asp page but is not instantiated. If you test
it, the variable is null because it isn't instantiated. when you're defining
the HeadingBar1, without the protected accessibility descriptor, it's
defined as private which means it's only visible within the class and not
within the asp page containing it.

Hope this helps,
Mark Fitzpatrick
Microsoft MVP - FrontPage

"Tina" <ti**********@nospammeexcite.com> wrote in message
news:%2****************@TK2MSFTNGP05.phx.gbl...
This is an issue regarding what exactly is accomplished by using
"Protected" when defining a variable. It seems it does much more than
just applying Protected status to a variable.

I have an ascx control named HeadingBar. I have dragged it onto an aspx
page.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar

This defines HeadingBar1 but, of course, does not instantiate it so
HeadingBar1 is nothing. (no suprise here)
If I use the following statement.....

Protected HeadingBar1 as HeadingBar

This not only defines HeadingBar1 but it also instantiates it as
ASP.HeadingBar_ascx. Here it seems that "Protected" is doing more than
giving a variable protected status - it's instantiating an instance!
Everything works fine when this is used.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar = new HeadingBar

It instantiates HeadingBar1 as myProjectName.HeadingBar! Here it's an
object of my project. But when the statement HeadingBar1.Title = "This is
the heading" is executed the Title property in the ascx control throws an
exception on the Set statement of that property saying that lblTitle.text
is not instantiated.

It seems "Protected" is performing some functionality that I cannot find
in the docs. Can anyone explain this?

Thanks,
T

May 18 '06 #2
I'm asuming you are using asp.net 1.1, if thats the case here is what I
understand. First of all, protected is an access modifier meaning that
only the class itself or any other class that inherits from it can
access that field, method, property, etc. In your case, when it
declares the control as Protected, it gives the ability for your .aspx
pages to declare controls and use it within the page. If you are
curious, if you look at the <%@ Control %> directive or <%@ Page %>
directive in your .aspx page you will see that it inherits from the
CodeBehind page. If you remove the protected keyword from the control
declaration, then when you run the page it will complain that it can't
find the control that you delared in your aspx page. So, when doing
CodeBehind, the Protected keywork is necessary. Does this give you some
idea of whats going on?

May 18 '06 #3
Tina:

The instance is created when you drop the ascx on the page. Everything else
is just a matter of whether you are referencing it or not...
Protected allows a child class access to the member. By doing Protected
HeadingBar as HeadingBar, it's allowing the child class (the aspx file) to
access it. Essentially, the aspx page is doing base.HeadingBar1 = new
HeadingBar() when you drop the control on there.

Protected doesn't do anything magical, it merely allows a child class to
access it. ASP.NET automatically associates member variables with control
ids. but in order to work, the aspx page (child) which inherits from the
codebehind (parent) has to have access to the property...so it must be
protected or public.
Dim HeadingBar1 as HeadingBar = new HEadingBar
creates a new instance of the class. What you need to do is to access the
existing instance is:

dim HeadingBar1 as HeadingBar = ctype(Page.FindControl("HeadingBar1"),
HeadingBar)

to create a new instance you need to do:

dim headingBar as HEadingBar = Page.LoadControl("~/headingbar.ascx");
someContainer.COntrols.Add(headingBar)

(for arguments sake, we can say that Page.LoadControl = new)
Either line is declaring a variable. In either case, dropping the control on
the aspx page is what creates the instance. Declaring it protected merely
lets ASP.NET assign the instance to the variable, as must be since the aspx
inherits from the codebehind..
Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/
"Tina" <ti**********@nospammeexcite.com> wrote in message
news:%2****************@TK2MSFTNGP05.phx.gbl...
This is an issue regarding what exactly is accomplished by using
"Protected" when defining a variable. It seems it does much more than
just applying Protected status to a variable.

I have an ascx control named HeadingBar. I have dragged it onto an aspx
page.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar

This defines HeadingBar1 but, of course, does not instantiate it so
HeadingBar1 is nothing. (no suprise here)
If I use the following statement.....

Protected HeadingBar1 as HeadingBar

This not only defines HeadingBar1 but it also instantiates it as
ASP.HeadingBar_ascx. Here it seems that "Protected" is doing more than
giving a variable protected status - it's instantiating an instance!
Everything works fine when this is used.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar = new HeadingBar

It instantiates HeadingBar1 as myProjectName.HeadingBar! Here it's an
object of my project. But when the statement HeadingBar1.Title = "This is
the heading" is executed the Title property in the ascx control throws an
exception on the Set statement of that property saying that lblTitle.text
is not instantiated.

It seems "Protected" is performing some functionality that I cannot find
in the docs. Can anyone explain this?

Thanks,
T

May 18 '06 #4
Got It. Thanks ( and thanks to Mark and tdavisjr too)
T

"Karl Seguin [MVP]" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME
net> wrote in message news:eY**************@TK2MSFTNGP03.phx.gbl...
Tina:

The instance is created when you drop the ascx on the page. Everything
else is just a matter of whether you are referencing it or not...
Protected allows a child class access to the member. By doing Protected
HeadingBar as HeadingBar, it's allowing the child class (the aspx file) to
access it. Essentially, the aspx page is doing base.HeadingBar1 = new
HeadingBar() when you drop the control on there.

Protected doesn't do anything magical, it merely allows a child class to
access it. ASP.NET automatically associates member variables with control
ids. but in order to work, the aspx page (child) which inherits from the
codebehind (parent) has to have access to the property...so it must be
protected or public.
Dim HeadingBar1 as HeadingBar = new HEadingBar
creates a new instance of the class. What you need to do is to access the
existing instance is:

dim HeadingBar1 as HeadingBar = ctype(Page.FindControl("HeadingBar1"),
HeadingBar)

to create a new instance you need to do:

dim headingBar as HEadingBar = Page.LoadControl("~/headingbar.ascx");
someContainer.COntrols.Add(headingBar)

(for arguments sake, we can say that Page.LoadControl = new)
Either line is declaring a variable. In either case, dropping the control
on the aspx page is what creates the instance. Declaring it protected
merely lets ASP.NET assign the instance to the variable, as must be since
the aspx inherits from the codebehind..
Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/
"Tina" <ti**********@nospammeexcite.com> wrote in message
news:%2****************@TK2MSFTNGP05.phx.gbl...
This is an issue regarding what exactly is accomplished by using
"Protected" when defining a variable. It seems it does much more than
just applying Protected status to a variable.

I have an ascx control named HeadingBar. I have dragged it onto an aspx
page.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar

This defines HeadingBar1 but, of course, does not instantiate it so
HeadingBar1 is nothing. (no suprise here)
If I use the following statement.....

Protected HeadingBar1 as HeadingBar

This not only defines HeadingBar1 but it also instantiates it as
ASP.HeadingBar_ascx. Here it seems that "Protected" is doing more than
giving a variable protected status - it's instantiating an instance!
Everything works fine when this is used.

If I use the following statement.....

Dim HeadingBar1 as HeadingBar = new HeadingBar

It instantiates HeadingBar1 as myProjectName.HeadingBar! Here it's an
object of my project. But when the statement HeadingBar1.Title = "This
is the heading" is executed the Title property in the ascx control throws
an exception on the Set statement of that property saying that
lblTitle.text is not instantiated.

It seems "Protected" is performing some functionality that I cannot find
in the docs. Can anyone explain this?

Thanks,
T


May 18 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Jules Dubois | last post by:
I'm want to create a superclass with nothing but attributes and properties. Some of the subclasses will do nothing but provide values for the attributes. (I'd also like to make sure (1) that the...
28
by: Act | last post by:
Why is it suggested to not define data members as "protected"? Thanks for help!
4
by: p988 | last post by:
using System; using System.Windows.Forms; using System.Drawing; class MyForm : Form { MyForm () { Text = "Windows Forms Demo"; }
3
by: Jordan Taylor | last post by:
I am confused about protected member functions and objects. Is there any particular advantage of declaring members protected?
2
by: Rob Richardson | last post by:
Greetings! Consider the following: class CBase { public: CBase(); virtual ~CBase();
3
by: eBob.com | last post by:
I'm getting this error on this statement ... Dim TA_rect As Rectangle = CType(Me.ClientRectangle.memberwiseclone(), Rectangle) "Me" inherits from UserControl. I'm not an OOD guru but maybe...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.