473,396 Members | 1,996 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,396 software developers and data experts.

classes with static members

I have a class that I want to make static but it uses some objects that are
instance objects. I keep getting a compiler error saying something about
using instance objects in a static class or method is not allowed. How do
you do this if you really need a static class but also have to use these
instance objects in them? If you need a simple example of what I am trying
to do, it is below:
imports Data.EternityRecordsEntities

namespace News
public static class News
EternityRecordsEntities NewsContext as new EternityRecordsEntities()

'*** A simple method to show what I am looking for. Also see above code.
public static function CreateNews(Title as string, Description as string,
Body as string) as integer
'*** Do whatever required to validate Title, Description and Body.

'*** Now use the entity framework model to insert the values above.
if (NewsContext.InsertNewsArticle(Title, Description, Body) = 0) '***
Creating news article succeeded.
'*** Log the action somehow.
Log.WriteEntry("Created news article '"+Title+"'.")
else
'*** Things didn't quite work out...

Log.WriteEntry("Failed to create news article '"+Title+"'.")
end if
end class
end namespace


Nov 11 '08 #1
5 2624
On 2008-11-11, Andy B <a_*****@sbcglobal.netwrote:
I have a class that I want to make static but it uses some objects that are
instance objects. I keep getting a compiler error saying something about
using instance objects in a static class or method is not allowed. How do
you do this if you really need a static class but also have to use these
instance objects in them? If you need a simple example of what I am trying
to do, it is below:
imports Data.EternityRecordsEntities

namespace News
public static class News
EternityRecordsEntities NewsContext as new EternityRecordsEntities()

'*** A simple method to show what I am looking for. Also see above code.
public static function CreateNews(Title as string, Description as string,
Body as string) as integer
'*** Do whatever required to validate Title, Description and Body.

'*** Now use the entity framework model to insert the values above.
if (NewsContext.InsertNewsArticle(Title, Description, Body) = 0) '***
Creating news article succeeded.
'*** Log the action somehow.
Log.WriteEntry("Created news article '"+Title+"'.")
else
'*** Things didn't quite work out...

Log.WriteEntry("Failed to create news article '"+Title+"'.")
end if
end class
end namespace

Your message is a bit confusing - the code you are showing seems to be a
combination of C# and VB :)

When you say static class, I assume you are refering to the C# construct:

public static class AStaticClass
{
....
}

Where all members of the class have to be static. VB uses the keyword Shared
rather then static for these sorts of methods. In VB Static applies to local
variables that keep their value between calls to the method

Another point, static classes do NOT have instance members because, there
are not instances of the class. So, members of a static class are refered to
as "class members", since the belong to the class and not a particular
instance.

Now that we have some of that cleared up - lets dive in... The equivalent of
the C# static class in VB.NET is a module.

NameSpace MyNameSpace
Public Module MyModule
Private _newsContext As New EntityRecordsEntity()

Public Sub DoStuff()
_newsContext.DoCoolStuff()
End Sub
End Module
End NameSpace

HTH
--
Tom Shelton
Nov 11 '08 #2
Your message is a bit confusing - the code you are showing seems to be a
combination of C# and VB :)
Oops! Sorry. I came from a C# background and I guess some of it still forces
me to think that way...grin.
When you say static class, I assume you are refering to the C# construct:

public static class AStaticClass
{
....
}
That's what I meant. A C# static class.
Where all members of the class have to be static. VB uses the keyword
Shared
rather then static for these sorts of methods. In VB Static applies to
local
variables that keep their value between calls to the method
Sounds a little confusing here. Have a simple example of how shared works?
Another point, static classes do NOT have instance members because,
thereare not instances of the class. So, members of a static class are
refered to as "class
members", since the belong to the class and not a particular instance.
OK. So the code I gave would have failed if it was converted to C# because
you can't have instances of classes in a static class. Once static, always
static...
Now that we have some of that cleared up - lets dive in... The equivalent
of
the C# static class in VB.NET is a module.
Can you give an example of how to actually use the below in simple code?
NameSpace MyNameSpace
Public Module MyModule
Private _newsContext As New EntityRecordsEntity()
I didn't think you could have the line above in a "static class".
Public Sub DoStuff()
_newsContext.DoCoolStuff()
End Sub
End Module
End NameSpace


Nov 11 '08 #3
On 2008-11-11, Andy B <a_*****@sbcglobal.netwrote:
>Your message is a bit confusing - the code you are showing seems to be a
combination of C# and VB :)
Oops! Sorry. I came from a C# background and I guess some of it still forces
me to think that way...grin.
I know what you mean - I am a C# programmer by day, so... :)
>When you say static class, I assume you are refering to the C# construct:

public static class AStaticClass
{
....
}
That's what I meant. A C# static class.
Ok... Then the VB.NET equivalent is a module.
>Where all members of the class have to be static. VB uses the keyword
Shared
rather then static for these sorts of methods. In VB Static applies to
local
variables that keep their value between calls to the method
Sounds a little confusing here. Have a simple example of how shared works?
Shared works like static in C# - only it can't be applied at the class level
(like C# v1).

Public Class MyClass

Public Shared Sub DoStuff ()
' Do Cool Stuff
End Sub
End Class

Calling code:

MyClass.DoStuff()

You call the method by a reference to the class name, not an instance of the
class. For instance:

Dim m As New MyClass()
m.DoStuff () ' compiler warning - though vb.net does allow you to do this

The usage of static in VB.NET might look like:

Public Function SomeSub() As Integer
Static i As Integer = 0
i += 1
Return i
End Function

In another method:

For i As Intege = 1 To 10
Console.WriteLine (SomeSub())
Next

1
2
3
4
5
6
7
8
9
10
>Another point, static classes do NOT have instance members because,
thereare not instances of the class. So, members of a static class are
refered to as "class
members", since the belong to the class and not a particular instance.
OK. So the code I gave would have failed if it was converted to C# because
you can't have instances of classes in a static class. Once static, always
static...
No, you can have instances of classes in a static class (or module). The
difference is that there is only one instance of a class variable, no matter
how many instances of the class are created... For instance, the
implementation of a singleton in C# often looks like:

public class Singleton
{
private static Singleton instance = new Singleton();

private Singleton(){}

public static Singleton Instance
{
get
{
return instance;
}
}

public void DoCoolStuff()
{
// do stuff
}
}

usi
usage:

Singleton.Instance.DoStuff();

The point is that if you declare a value as Shared in a class, then it is
exactly that - shared across all instances.
>Now that we have some of that cleared up - lets dive in... The equivalent
of
the C# static class in VB.NET is a module.
Can you give an example of how to actually use the below in simple code?
>NameSpace MyNameSpace
Public Module MyModule
Private _newsContext As New EntityRecordsEntity()
I didn't think you could have the line above in a "static class".
Sure you can...
>Public Sub DoStuff()
_newsContext.DoCoolStuff()
End Sub
End Module
End NameSpace
Usage:
MyNamespace.MyModule.DoStuff ()

--
Tom Shelton
Nov 11 '08 #4
>NameSpace MyNameSpace
Public Module MyModule
Private _newsContext As New EntityRecordsEntity()
I didn't think you could have the line above in a "static class".
Sure you can...
Ok. So From what I get, I have the following things:

1. Static (C#) and modules (VB) can have instances of objects that were
created inside them.
2. Shared members are members that stay the same no matter what instance of
a class happens to be created at the time (kind of like a pooled resource).
3. Modules and Static classes can't be turned into an instance.

Guess the old time C++ is stuck inside my head then. I remember not being
able to create instances of objects inside of static classes.

Nov 12 '08 #5
Also make sure to use the exact wording each time i.e. "creating an
instance", "having instances" and ealier "using instances" is not exacty the
same thing...

The basic rule is that a shared member can't refer to "me" or "this" (oas
they operate at the class level not at a particular instance level).

--
Patrice

"Andy B" <a_*****@sbcglobal.neta écrit dans le message de groupe de
discussion : OG**************@TK2MSFTNGP03.phx.gbl...
>>NameSpace MyNameSpace
Public Module MyModule
Private _newsContext As New EntityRecordsEntity()
I didn't think you could have the line above in a "static class".
Sure you can...

Ok. So From what I get, I have the following things:

1. Static (C#) and modules (VB) can have instances of objects that were
created inside them.
2. Shared members are members that stay the same no matter what instance
of a class happens to be created at the time (kind of like a pooled
resource).
3. Modules and Static classes can't be turned into an instance.

Guess the old time C++ is stuck inside my head then. I remember not being
able to create instances of objects inside of static classes.
Nov 12 '08 #6

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

Similar topics

3
by: Erik Bongers | last post by:
Hi, Nested classes only seem to be able to access static members of the surrounding class : class SurroundingClass { public: class InnerClass { public:
45
by: Steven T. Hatton | last post by:
This is a purely *hypothetical* question. That means, it's /pretend/, CP. ;-) If you were forced at gunpoint to put all your code in classes, rather than in namespace scope (obviously classes...
5
by: kuvpatel | last post by:
Hi I want to refer a class called LogEvent, and use one of its methods called WriteMessage without actually having to create an instance of Logevent. I have tried using the word sealed with...
11
by: Kevin Prichard | last post by:
Hi all, I've recently been following the object-oriented techiques discussed here and have been testing them for use in a web application. There is problem that I'd like to discuss with you...
4
by: JC | last post by:
Suppose an ASP.Net project contains a public static class with public methods and members that are used throughout the application. Of course being static, there is only copy of the class within...
16
by: chameleon | last post by:
I have 2 classes with exactly the same members (all static except dtor/ctor). Classes have different implementantion in only one static member function and first class has one more member...
3
by: puzzlecracker | last post by:
Would you quickly remind me the difference between, regular class, static class, and nested class? Thanks
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: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
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
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
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...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

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.