拡張メソッド

組み込みのクラスやライブラリのクラスを拡張したいときに使える拡張メソッドというのがある。
staticなクラスを作りそこにあるメソッドがまるで自身のクラスのメソッドのように扱える。
staticクラスのメソッドになるので、自身のプライベートなメソッドやプロパティにはアクセスができない。

例えば
A だと
###
#A#
###
のように自身の文字列を囲みの文字に変えるよう機能を拡張する場合は

static class StaticStringExtensions {
	/**
	 * 「#」で文字を囲む。
	 */
	public static string BorderSharp(this string s) {
		string border = "";

		for (int i = 0; i < s.Length + 2; ++i) {
			border += "#";
		}

		string blockStr = "";
		blockStr = border + "\n";
		blockStr += "#" + s + "#" + "\n";
		blockStr += border + "\n";

		return blockStr;
	}
}

使い方は

static class StaticStringExtensions {
using UnityEngine;

// テストクラス
public class StringTest : MonoBehaviour {
	public void Start() {
		Debug.Log("ABCDEFG".BorderSharp());
		Debug.Log(StaticStringExtensions.BorderSharp("HIJKLMN"));

		Debug.Log("OPQRSTU".BorderLine());
	}
}

自身の作ったクラスなんかであればpartialというキーワードを付けたクラスを作るとそのクラスを拡張できる。Objective-Cでいうところのカテゴリの様な感じでしょか?