write function using c# code example

Example 1: c# functions

/* Answer to: "c# functions" */

/*
  A function has the following syntax:
  <modifiers> <return-type> method-name(parameter-list)
  
  You can use the following modifiers with a local function:
  - async
  - unsafe
  - static (in C# 8.0 and later). A static local function can't capture local
  	variables or instance state.
  - extern (in C# 9.0 and later). An external local function must be static.
  
  There's an example below:
*/

using System;
					
public class Program
{
	public static void Main()
	{
		Console.WriteLine(square(4)); // Returns '16'
		Console.WriteLine(cube(4)); // Returns '64'
	}
	
	public static int square(int n)
	{
		return n * n;
	}
	
	public static int cube(int n)
	{
		return n * n * n;
	}
}

Example 2: C# func

//Func is a invokeable container for Mehod or function method 
//that returns something. They can accept inputs based on the generals 
//that you template on and reserve the last general template for the return. 
//If you do not need a return or wish to return nothing check out the Action Class
//example:
Func<string/*Or some other type to return*/> YourFuncProperty
= new Func(()=>{/*do something*/ return "or return what you want";});
//or
Func<string/*Or some other type to return*/> YourFuncProperty
= ()=>{/*do something*/return "or return what you want";};
//for a paramiterized func
Func<int
/*Or some other types followed by others optional comma seperated*/,
string/*Or some other type to return last*/> YourParamitarizedFuncProperty =
  (x/*Each Param will be to the comma seperated types*/)=>
  {/*do some with the inputs*/return $"you entered a {x} or return what you want";};

// you can invloke them by calling their invokes.
string YouReturn = YourFuncProperty.Invoke();
string YouReturn = YourParamitarizedFuncProperty.Invoke(5);
//The last is the basic sycronous way. For a aysnc call uses
YourFuncProperty.BeginInvoke();
YourParamitarizedFuncProperty.BeginInvoke(5);
//however, you will need to begin a await with EndInvoke to get your result after.
string YouReturn = YourFuncProperty.EndInvoke();
string YouReturn = YourParamitarizedFuncProperty.EndInvoke(5);

//You can also fill them with defined methods in a class if you wish, 
//but the signatures must match.
Func<string> YourActionDefinedProperty = YourDefinedMethod;
string YourDefinedMethod()
{
  //do something
  return "or return what you want";
}

//Example of use
public sealed class DataContainer
{
  	//A bit contrived but we will give the ablity to overide the printout 
  	//of the class while still keeping it sealed. See the invoke at ToString.
  	//could be useful in a library or something?
	static func<string> SealedFuncStringOverride;

	DataContainer(datetime Date)
    {
      this.Date = Date;
      
    }
  	public datetime Date {get; private set;}
  	public int Amount {get; private set;}
  	public string Info {get; private set;}
  	public string FirstName {get; private set;}
  
  	//The invoke is used in here.
  	public override string ToString()
   	{
      if(SealedFuncStringOverride!=null)
        return SealedFuncStringOverride.BeginInvoke();
      return base.ToString;
   	}
}