using System;
public class Starter {
public unsafe static void Main() {
int val = 5;
int* pA = &val;
int* pB;
pB = MethodA(pA);
Console.WriteLine("*pA = {0} | *pB = {0}", *pA, *pB);
}
public unsafe static int* MethodA(int* pArg) {
*pArg += 15;
return pArg;
}
}
Language Basics
creates instances of a value and a reference type
using System;
class Starter {
static void Main() {
int localvalue = 5;
MyClass objZ = new MyClass();
DisplayType(localvalue);
DisplayType(objZ);
}
static void DisplayType(object parameterObject) {
Type parameterType = parameterObject.GetType();
string name = parameterType.Name;
Console.WriteLine("Type is " + name);
if (name == "MyClass") {
((MyClass)parameterObject).Display();
}
}
}
class MyClass {
public void Display() {
Console.WriteLine("MyClass::Display");
}
}
Passing parameters to methods
using System;
class ParameterTest {
static void SomeFunction(int[] ints, int i) {
ints[0] = 100;
i = 100;
}
public static void Main() {
int i = 0;
int[] ints = { 0, 1, 2, 4, 8 };
Console.WriteLine("i = " + i);
Console.WriteLine("ints[0] = " + ints[0]);
Console.WriteLine("Calling SomeFunction...");
SomeFunction(ints, i);
Console.WriteLine("i = " + i);
}
}
Reference, output and value parameters.
using System;
class ReferenceAndOutputParameters
{
public void aMethod()
{
int y = 5;
int z;
Console.WriteLine( "Original value of y: {0}", y );
Console.WriteLine( "Original value of z: uninitialized
" );
SquareRef( ref y );
SquareOut( out z );
Console.WriteLine( "Value of y after SquareRef: {0}", y );
Console.WriteLine( "Value of z after SquareOut: {0}
", z );
Square( y );
Square( z );
Console.WriteLine( "Value of y after Square: {0}", y );
Console.WriteLine( "Value of z after Square: {0}", z );
}
void SquareRef( ref int x )
{
x = x * x;
}
void SquareOut( out int x )
{
x = 6;
x = x * x;
}
void Square( int x )
{
x = x * x;
}
}
class ReferenceAndOutputParamtersTest
{
static void Main( string[] args )
{
ReferenceAndOutputParameters test = new ReferenceAndOutputParameters();
test.aMethod();
}
}
Provides a simple example of function overloading
/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
//
// Overload.cs -- Provides a simple example of function overloading
//
// Compile this program with the following command line:
// C:>csc Overload.cs
//
namespace nsOverload
{
using System;
public class clsMainOverload
{
static public void Main ()
{
int iVal = 16;
long lVal = 24;
Console.WriteLine ("The square of {0} is {1}
",
iVal, Square(iVal));
Console.WriteLine ("The square of {0} is {1}",
lVal, Square(lVal));
}
static int Square (int var)
{
Console.WriteLine ("int Square (int var) method called");
return (var * var);
}
static long Square (long var)
{
Console.WriteLine ("long Square (long var) method called");
return (var * var);
}
}
}
Catch StackOverflowException for recursive function
using System;
class MainClass
{
public static void Main()
{
try
{
Recursive();
}
catch(StackOverflowException)
{
Console.WriteLine("The CLR is out of stack space.");
}
}
public static void Recursive()
{
Recursive();
}
}
Define function
/*
Learning C#
by Jesse Liberty
Publisher: O'Reilly
ISBN: 0596003765
*/
using System;
public class Functions
{
static void Main()
{
Console.WriteLine("In Main! Calling SomeMethod()...");
SomeMethod();
Console.WriteLine("Back in Main().");
}
static void SomeMethod()
{
Console.WriteLine("Greetings from SomeMethod!");
}
}