○クラス

■クラスの作成

public class testClass
{
	public testClass(){
		System.Diagnostics.Trace.WriteLine("コンストラクタ"); 
	}
	public int add(int a,int b){
		return a+b;
	}
}

▽上のクラスの呼び出し

private void button1_Click(object sender, System.EventArgs e)
{
	testClass obj=new testClass();
	System.Diagnostics.Trace.WriteLine(obj.add(10,20).ToString()); 
}

■コンストラクタとデストラクタ

class Class1
{
	static void Main(string[] args)
	{
		Class1 a =new Class1();
		a=null;
		System.GC.Collect();//ガベージコレクタの強制実行
		Console.Read();
	}

	Class1()
	{
		Console.WriteLine("コンストラクタ");
	}

	~Class1()
	{
		Console.WriteLine("デストラクタ");
	}
}


■namespaceとクラスの作成

namespace inaba
{
	public class testClass
	{
		public testClass()
		{
			System.Diagnostics.Trace.WriteLine("コンストラクタ"); 
		}
		public int add(int a,int b)
		{
			return a+b;
		}

	}
}

▽上のクラスの呼び出し

private void button1_Click(object sender, System.EventArgs e)
{
	inaba.testClass obj=new inaba.testClass();
	System.Diagnostics.Trace.WriteLine(obj.add(10,20).ToString()); 
}

○継承

■継承とオーバーロード

public class testClass
{
	public testClass()
	{
		System.Diagnostics.Trace.WriteLine("コンストラクタ"); 
	}
	public int add(int a,int b)
	{
		return a+b;
	}
}

public class testClass2 : testClass
{
	public testClass2()
	{
		System.Diagnostics.Trace.WriteLine("コンストラクタ2");
	}
	public new int add(int a,int b)
	{
		return a+b+1;
		//return base.add(a,b);//←基本クラスの呼び出し
	}
}

▽実行するコード
testClass obj=new testClass2();
System.Diagnostics.Trace.WriteLine(obj.add(10,20).ToString()); 

処理結果
コンストラクタ
コンストラクタ2
30

▽実行するコード2
testClass2 obj=new testClass2();
System.Diagnostics.Trace.WriteLine(obj.add(10,20).ToString()); 

処理結果
コンストラクタ
コンストラクタ2
31

■抽象クラスとオーバーライド

public abstract class testClass
{
	public abstract int add(int a,int b);
	public int add2(int a,int b)
	{
		return a+b+2;
	}
}

public  class testClass2 : testClass
{
	public override int add(int a,int b)
	{
		return a+b;
	}
}

▽実行するコード
testClass obj=new testClass2();
System.Diagnostics.Trace.WriteLine(obj.add(10,20).ToString()); 
System.Diagnostics.Trace.WriteLine(obj.add2(10,20).ToString()); 

処理結果
30
32

■インターフェイス

public interface testClass
{
	int add(int a,int b);
}

public  class testClass2 : testClass
{
	public  int add(int a,int b)
	{
		return a+b;
	}
}

▽実行するコード
testClass obj=new testClass2();
System.Diagnostics.Trace.WriteLine(obj.add(10,20).ToString()); 

処理結果
30

■staticメソッド

public  class testClass
{
	public static int add(int a,int b)
	{
		return a+b;
	}
}

▽実行するコード
System.Diagnostics.Trace.WriteLine(testClass.add(10,20).ToString()); 

処理結果
30

○エラー

int[] ar=new int[10];//配列を宣言
try
{
	ar[10]=1;//配列を超えた値に書き込んでエラーを発生させる
}
catch(Exception err)
{
	System.Diagnostics.Trace.WriteLine("エラー発生 "+ err.ToString()); 
}
finally
{
	System.Diagnostics.Trace.WriteLine("finally"); 
}

処理結果
エラー発生 System.IndexOutOfRangeException: インデックスが配列の境界外です。
finally



▲トップページ > Visual BASIC と C#