What exactly is the pattern of when () should be used after a function?

I thought i understood this, but apparently i dont. any help is appreciated.

All functions will always have parentheses after them.

public string MyFunction()
    // Code

If they do not, they will be read as a variable:

public string MyString;

or a property-variable (C#):

public string MyString {get; set;}

Whether a function has {} after it, containing code, depends on whether it is an abstract method (no {}'s), or a normal or virtual method. There are many different ways of writing methods, depending on how they are used, what they return and which parameters they have.

A normal function has elements like these:

<optional access descriptor>     <return type or 'void'>  <name>    (<parameters>)        { <code> }
| public / private / protected |  string, int, void etc. |      | (int x, string text) |

Return types can be any basic type (int, bool etc.) or any class, but can also be left empty/void.

Name can be just about anything, though there are naming rules.

Parameters can be any basic type or class, and are available inside the method. The usage of these can be customized too.

You use empty parentheses if there are no parameters passed to the function.

void Start() {}

Is equal to

void Start(void) {}

at least in C#.

Of course you need parentheses after any function, if it has parameters or not. Thats because the compiler needs to know that it’s actually a function and not a variable or something else.