|
Why does my attempt to use a method called "Start_Data_Command_04" in this file produce the stated error ? (I'll list the error immediately after the code)
File Name: Form1.cs
namespace George_Washington
{
public partial class Form1 : Form
{
void Button4_Start_Data_Click(object sender, EventArgs e)
{
The_User_Clicked_A_Button_Called.Start_Data_Command_04();
}
}
}
Quote: Error 2 An object reference is required for the non-static field, method, or property 'SerialPortPractice_03.The_User_Clicked_A_Button_Called.Start_Data_Command_04()'
The method named "Start_Data_Command_04" is located in this file, and produces an error (no clue if they are related) of its own...
File name: The_User_Clicked_A_Button_Called.cs
namespace George_Washington
{
public class The_User_Clicked_A_Button_Called
{
internal void Start_Data_Command_04()
{
UART.send_command
( Protocol_Packets_01.BARN_Command_04_Start_Data_Flood,
0,
Protocol_Packets_01.BARN_Command_04_Start_Data_Flood.Length
)
;
}
}
}
Quote: Error 1 An object reference is required for the non-static field, method, or property 'SerialPortPractice_03.UART.send_command(byte[], int, int)'
No matter what word I put in front of the method; e.g., internal, private, public, static, whatever; I still get an error.
The actual method in question is here
File Name: UART.cs
namespace George_Washington
{
class UART
{
public void send_command(byte[] The_Byte_Array, int Starting_Place, int Length)
{
The_Serial_Port_We_Are_Testing.Write(
The_Byte_Array,
Starting_Place,
Length
)
;
}
}
}
|
|
|
|
|
The_User_Clicked_A_Button_Called.Start_Data_Command_04(); This statement is telling the compiler that you have a static method called Start_Data_Command_04 in the class The_User_Clicked_A_Button_Called . Plainly, from the definition of this method, this is not right - this method is actually an instance method. So, you either have to declare an instance of The_User_Clicked_A_Button_Called using new The_User_Clicked_A_Button_Called().userClicked.Start_Data_Command_04(); or you have to add the static modifier to Start_Data_Command_04 .
|
|
|
|
|
Thank you, a lot.
When I change this line...
internal void Start_Data_Command_04()
...to this line...
internal static void Start_Data_Command_04()
...then the second error ("Error 1" in my initial example) goes away, but the first one ("Error 2") remains.
My attempts to declare an instance of the method produced more compiler errros.
If you (or anyone who's reading) could tell me the syntax of how to declare an instance of the method in question, I thank you.
More importantly, and an even greater value, would be to show me how to find the syntax for myself.
Performing five or ten different searches on Google and Bing, (and MSDN, which is really Bing, as I understand it) using my best guess of how to phrase it, (e.g., with search phrases like, "C#, The specific syntax for Declaring an instance of a static method in another class" and so on) I did not immediately see an example of the syntax for declaring an instance of a static method in another class.
|
|
|
|
|
The_User_Clicked_A_Button_Called anInstnace = new The_User_Clicked_A_Button_Called(); That's how you declare an instance. In order to call the method using an instance, the method must NOT be static. As far as mastering the concepts behind C#, I would really recommend this[^] book.
[Edit note]Please change your class and method names to be less cumbersome. You'll thank me in the long run.
|
|
|
|
|
You have a set of extra parenthesis in there pete.
|
|
|
|
|
Cheers mate - it's such a stupid class name, I just copied and pasted it from my original answer. I should have checked what I picked up there.
|
|
|
|
|
I second that book recommendation.
Lobster Thermidor aux crevettes with a Mornay sauce, served in a Provençale manner with shallots and aubergines, garnished with truffle pate, brandy and a fried egg on top and Spam - Monty Python Spam Sketch
|
|
|
|
|
This is actually meant as a comment.
It appears that you are using a very non-standard naming convention in your code. This actually makes the code much more difficult for a another developer to read as we all become accustomed to specific casing and naming methodologies. It's all good if this is just something you are writing for yourself, but habits are hard to break and if you work on commercial code with naming schemes like this, you may run into some developers who won't take kindly to it.
You should take a look at Camel Casing[^]. This is the most common way that CSharp developers write code, and if used correctly will be much appreciated by other developers who will have to look at your code sometime. I have taken the liberty of taking one of your methods above to show you what I mean. Cheers.
namespace GeorgeWashington
{
public class TheUserClickedAButtonCalled
{
internal void StartDataCommand04()
{
UART.send_command
( ProtocolPackets01.BARN_Command04StartDataFlood,
0,
ProtocolPackets01.BARNCommand04StartDataFlood.Length
)
;
}
}
}
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Just read your suggested webpage.
If the underscores are annoying, then I'll do my best to remove them and Smush the words together.
My vocabulary now includes the phrase CamelCasing.
Oh, and thanks for the input.
|
|
|
|
|