git @ Cat's Eye Technologies Dipple / master csharp / ref.cs
master

Tree @master (Download .tar.gz)

ref.cs @masterraw · history · blame

// SPDX-FileCopyrightText: Chris Pressey, the original author of this work, has dedicated it to the public domain.
// For more information, please refer to <https://unlicense.org/>
// SPDX-License-Identifier: Unlicense

using System;

class Thing
{
    public int whatever;

    override public String ToString()
    {
        return "Thing(" + whatever + ")";
    }
}

class Program
{
    static void Main()
    {
        Thing t = new Thing();
        t.whatever = 20;
        Console.WriteLine(t.ToString());
        Nougat(t);
        Console.WriteLine(t.ToString());
        Splunge(ref t);
        Console.WriteLine(t.ToString());
        Plucky(out t);
        Console.WriteLine(t.ToString());
    }

    static void Nougat(Thing t)
    {
        t.whatever = 10;
    }

    static void Splunge(ref Thing t)
    {
        Thing r = new Thing();
        r.whatever = 17;
        Console.WriteLine("t was " + t);
        t = r;
    }

    static void Plucky(out Thing t)
    {
        Thing r = new Thing();
        r.whatever = 8;
        // Can't do this: Console.Write("t was " + t);
        t = r;
    }
}