472,127 Members | 1,723 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

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

How to reference function in shared function?

I'm trying to use the F1 function inside of F2 function below. I keep
getting the error posted below the code. If I remove the Shared
declaration from F2, it works fine. What exactly does the error mean?

Public Class myClass

Function F1(ByVal url As String) As Struct1
-- do something --
End Function

Public Shared Function F2(ByVal value2 As String) As String
F1(SomeValue) 'error references this line
-- do something --
End Function

End Class

Cannot refer to an instance member of a class from within a shared method or
shared member initializer without an explicit instance of the class.

I also tried this below the class declaration:

Public F1_ As new myClass
F1_.F1()

That gives an error saying 'Declaration Expected' on F1_, anywhere I try to
use it. Any suggestions on how I can reference F1 in F2?

Thanks,
Brett
Nov 21 '05 #1
4 15676
Because you need an instance of the class to call a non-shared function.

Shared functions are like a global function, you can call them like a
function you define in a form.

You can not call F1 directly without creating an instance of the class.
Neither can F2.

best regards,
Alejandro Lapeyre

"Brett" <no@spam.net> escribió en el mensaje
news:OY**************@tk2msftngp13.phx.gbl...
I'm trying to use the F1 function inside of F2 function below. I keep
getting the error posted below the code. If I remove the Shared
declaration from F2, it works fine. What exactly does the error mean?

Public Class myClass

Function F1(ByVal url As String) As Struct1
-- do something --
End Function

Public Shared Function F2(ByVal value2 As String) As String
F1(SomeValue) 'error references this line
-- do something --
End Function

End Class

Cannot refer to an instance member of a class from within a shared method
or shared member initializer without an explicit instance of the class.

I also tried this below the class declaration:

Public F1_ As new myClass
F1_.F1()

That gives an error saying 'Declaration Expected' on F1_, anywhere I try
to use it. Any suggestions on how I can reference F1 in F2?

Thanks,
Brett

Nov 21 '05 #2
Hi Brett,

you have to instance the class before.

Furthermore, if the F1 function is used inside of this class, I will put it
as private.

The code will be similar to:

Dim MClass As New Class1
MessageBox.Show(MClass.F2("sample"))
Public Class Class1

Private Function F1(ByVal url As String) As String
Return url + "lalala "
End Function

Public Shared Function F2(ByVal value2 As String) As String
Dim MyF1 As New Class1
Return MyF1.F1("something ") + value2
End Function

End Class
Kind Regards,

Jorge Serrano Pérez
MVP VB.NET
"Brett" wrote:
I'm trying to use the F1 function inside of F2 function below. I keep
getting the error posted below the code. If I remove the Shared
declaration from F2, it works fine. What exactly does the error mean?

Public Class myClass

Function F1(ByVal url As String) As Struct1
-- do something --
End Function

Public Shared Function F2(ByVal value2 As String) As String
F1(SomeValue) 'error references this line
-- do something --
End Function

End Class

Cannot refer to an instance member of a class from within a shared method or
shared member initializer without an explicit instance of the class.

I also tried this below the class declaration:

Public F1_ As new myClass
F1_.F1()

That gives an error saying 'Declaration Expected' on F1_, anywhere I try to
use it. Any suggestions on how I can reference F1 in F2?

Thanks,
Brett

Nov 21 '05 #3
"Brett" <no@spam.net> schrieb:
I'm trying to use the F1 function inside of F2 function below. I keep
getting the error posted below the code. If I remove the Shared
declaration from F2, it works fine. What exactly does the error mean?

Public Class myClass


In addition to the other replies: Note that 'MyClass' is a keyword and thus
cannot be used as an identifier. You can work around that by putting
'MyClass' into square brackets:

\\\
Public Class [MyClass]
...
///

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Nov 21 '05 #4
If I define a variable in the class such as
Private DontHardCodeThisValue As String = "This is not hard coded"

Then, in the same class for the shared function, I'll need to create an
instance of the class correct?
Public Shared Function F2(ByVal value2 As String) As String
Dim MyVariable As New Class1
Return MyVariable .DontHardCodeThisValue
End Function

Now, in Form1 I also create an instance of Class1 to have a reference to F2.
Doing this will create two instances of Class1 correct? One in Form1 and
the one created in F2. Is this good practice? How else can it be done?

Thanks,
Brett

"Jorge Serrano [MVP VB]"
<NO*******************@NOQUIEROSPAMportalvbNOSPAM. com.NOQUIEROSPAM> wrote in
message news:31**********************************@microsof t.com...
Hi Brett,

you have to instance the class before.

Furthermore, if the F1 function is used inside of this class, I will put
it
as private.

The code will be similar to:

Dim MClass As New Class1
MessageBox.Show(MClass.F2("sample"))
Public Class Class1

Private Function F1(ByVal url As String) As String
Return url + "lalala "
End Function

Public Shared Function F2(ByVal value2 As String) As String
Dim MyF1 As New Class1
Return MyF1.F1("something ") + value2
End Function

End Class
Kind Regards,

Jorge Serrano Pérez
MVP VB.NET
"Brett" wrote:
I'm trying to use the F1 function inside of F2 function below. I keep
getting the error posted below the code. If I remove the Shared
declaration from F2, it works fine. What exactly does the error mean?

Public Class myClass

Function F1(ByVal url As String) As Struct1
-- do something --
End Function

Public Shared Function F2(ByVal value2 As String) As String
F1(SomeValue) 'error references this line
-- do something --
End Function

End Class

Cannot refer to an instance member of a class from within a shared method
or
shared member initializer without an explicit instance of the class.

I also tried this below the class declaration:

Public F1_ As new myClass
F1_.F1()

That gives an error saying 'Declaration Expected' on F1_, anywhere I try
to
use it. Any suggestions on how I can reference F1 in F2?

Thanks,
Brett

Nov 21 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Matt | last post: by
1 post views Thread by Edward | last post: by
2 posts views Thread by Hayrob | last post: by
2 posts views Thread by Aaron Cutlip | last post: by
1 post views Thread by =?Utf-8?B?am9uZWZlcg==?= | last post: by
reply views Thread by leo001 | last post: by

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.