out は、return 以外で値を返すことができる。したがって、メソッド内で処理した結果を複数の変数で元に返したい場合に使える。
namespace Test001
{
    class Program
    {
        static void Main(string[] args)
        {
            String str;
Method(out str);
            Console.WriteLine(str);
        }
        static void Method(out string str)
        {
            str = "Hello";
        }
    }
}
ref も参照渡しの効果が得られる。out と違うところは、外部からの参照変数に値を代入しなくても、コンパイルが通る。
out は、参照変数に値を代入しないと、コンパイルは通らない。
namespace Test001
{
    class Program
    {
        static void Main(string[] args)
        {
            String str = "";
Method(ref str);
            Console.WriteLine(str);
        }
        static void Method(ref string str)
        {
            str = "Hello";
        }
    }
}
  
  
  
  