// マルチキャストイベントの例
using System;
// イベントのためのデリゲート宣言
delegate void MyEventHandler();
// イベントの送信側のクラス
class MyEvent {
public event MyEventHandler SomeEvent;
// イベント送信を実装したメソッド
public void Fire() {
if(SomeEvent != null)
SomeEvent();
}
}
class X {
public void Xhandler() {
Console.WriteLine("Event received by X object");
}
}
class Y {
public void Yhandler() {
Console.WriteLine("Event received by Y object");
}
}
class EventDemo {
static void Handler() {
Console.WriteLine("Event received by EventDemo");
}
static void Main() {
MyEvent evt = new MyEvent();
X xOb = new X();
Y yOb = new Y();
// ハンドラをイベントリストに追加する
evt.SomeEvent += Handler;
evt.SomeEvent += xOb.Xhandler; //←マルチキャストのチェーンを作成する
evt.SomeEvent += yOb.Yhandler;
// イベントを発生させる
evt.Fire();
Console.WriteLine();
// ハンドラを削除する
evt.SomeEvent -= xOb.Xhandler;
Console.WriteLine("After removing xOb.Xhandler");
evt.Fire();
}
}
using System;
namespace Chapter01All
{
delegate void Calcs(ref int a, ref int b);
class DeleGateSample
{
void Kasan(ref int a, ref int b)
{
a += b;
}
void Genzan(ref int a, ref int b)
{
a -= b;
}
void Kakezan(ref int a, ref int b)
{
a *= b;
}
void Warizan(ref int a, refint b)
{
a /= b;
}
static void Main()
{
Calcs = Op;
Calcs kasan = Kasan;
Calcs genzan = Genzan;
Calcs kakezan = Kakezan;
int a = 10; int b = 20;
Op = kasan;
Op += genzan;
Op(ref a, ref b); //a+b=>30, 30-b=>10
Console.WriteLine(a);
int c = 100; int d = 200;
Op = genzan;
Op += kakezan;
Op(ref c, ref d); //c-d=>-100, -100*200=>-20000
Console.WriteLine(c);
}
}
}
using System;
namespace Chapter01All
{
delegate int Calcs(int a, int b);
class DeleGateSample
{
int Kasan(int a, int b)
{
return a + b;
}
int Genzan(int a, int b)
{
return a - b;
}
int Kakezan(int a, int b)
{
return a * b;
}
int Warizan(int a, int b)
{
return a / b;
}
static void Main()
{
DeleGateSample sobj = new DeleGateSample();
Calcs Op = sobj.Kasan;
Console.WriteLine(Op(10, 20));
Op = sobj.Genzan;
Console.WriteLine(Op(10, 20));
Op = sobj.Kakezan;
Console.WriteLine(Op(10, 20));
Op = sobj.Warizan;
Console.WriteLine(Op(10, 20));
Calcs[] Ope = new Calcs[] {sobj.Kasan, sobj.Genzan, sobj.Kakezan, sobj.Warizan };
for(int i=0; i<Ope.Length; i++)
{
Console.WriteLine(Ope[i](10, 20));
}
}
}
}
using System;
namespace Chapter01All
{
delegate int Calcs(int a, int b);
class DeleGateSample
{
static int Kasan(int a, int b)
{
return a + b;
}
static int Genzan(int a, int b)
{
return a - b;
}
static int Kakezan(int a, int b)
{
return a * b;
}
static int Warizan(int a, int b)
{
return a / b;
}
static void Main()
{
Calcs Op = new Calcs(Kasan);
Console.WriteLine(Op(10, 20));
Op = Genzan;
Console.WriteLine(Op(10, 20));
Op = Kakezan;
Console.WriteLine(Op(10, 20));
Op = Warizan;
Console.WriteLine(Op(10, 20));
}
}
}
using System;
namespace Chapter01All
{
delegate int Calcs(int a, int b);
class DeleGateSample
{
static int Kasan(int a, int b)
{
return a + b;
}
static int Genzan(int a, int b)
{
return a - b;
}
static int Kakezan(int a, int b)
{
return a * b;
}
static int Warizan(int a, int b)
{
return a / b;
}
static void Main()
{
Calcs[] Ope = new Calcs[] {Kasan, Genzan, Kakezan, Warizan };
for(int i=0; i<Ope.Length; i++)
{
Console.WriteLine(Ope[i](10, 20));
}
}
}
}
// ConsoleApplication2.cpp : このファイルには 'main' 関数が含まれています。プログラム実行の開始と終了がそこで行われます。
//
#include <iostream>
int gcd(int a, int b) {
while (a != b) {
if (a > b) a = a - b; else b = b - a;
}
return a;
}
int gcd2(int a, int b) {
int w;
while (b != 0) {
w = a % b;
a = b; b = w;
}
return a;
}
int main()
{
int a = 128; int b = 72;
printf("整数%d, 整数%d, の最大公約数=%d", a, b, gcd(a, b));
}