isԋࢉࢠύϑΥʔϚϯεࡴ͠ʁ CLR࣮̎ճܕΛݕ͍ࠪͯ͠Δ isԋࢉࢠͰ1ճ ΩϟετͰ1ճ class
A
{
public
void
Hello()
{
Console.WriteLine("HelloA");
}
}
class
B
:
A
{
new
public
void
Hello()
{
Console.WriteLine("HelloB");
}
}
static
void
Main(string[]
args)
{
B
b
=
new
B();
b.Hello();
if(b
is
A)
{
A
a
=
(A)b;
a.Hello();
}
}
asԋࢉࢠͰ1ճͷݕࠪ class
A
{
public
void
Hello()
{
Console.WriteLine("HelloA");
}
}
class
B
:
A
{
new
public
void
Hello()
{
Console.WriteLine("HelloB");
}
}
static
void
Main(string[]
args)
{
B
b
=
new
B();
A
a
=
b
as
A;
if(a
!=
null)
a.Hello();
} ݕࠪճ1ճʹͳ͍ͬͯΔͷͰ ύϑΥʔϚϯεྑ͘ͳΔ
؆୯ͳδΣωϦοΫྫ public
static
T
Max(T
a,T
b)
where
T
:
IComparable
{
return
a.CompareTo(b)
>
0
?
a
:
b;
} where۟Λ͏ࣄͰɺܕʹ͍ͭ ੍ͯΛՃ͑Δࣄग़དྷΔ http://ufcpp.net/study/csharp/sp2_generics.html
Task Task t = new Task(ॲཧ); t.Start();͜ΕͰॲཧΛελʔτग़དྷΔ Task t = Task.Run(ॲཧ);্2ߦΛ·ͱΊΒΕΔ Task t = new Task.Factory.StartNew(ॲཧ,Φϓγϣϯ);ͰΦϓγϣϯΛࢦఆ͠ ͯλεΫΛ࡞࣮͠ߦͰ͖Δ t.IsCompletedͰॲཧ͕͔ྃͨ͠Ͳ͏͔ௐΒΕΔ(ϙʔϦϯάͰ͑Δ) t.Wait();ͰλεΫͷॲཧऴྃΛػͰ͖Δ Task.WaitAll(ՄมͰλεΫΛࢦఆ);੩తϝιουͰࢦఆͨ͠λεΫશͯͷ ऴྃΛػͰ͖Δ
Task ΓΛαϙʔτ͍ͯ͠Δ TaskΫϥεͷδΣωϦοΫ൛ʹฦ͍ͨ͠ҾΛࢦఆͯ͠ TaskΛ࡞͠͏ Task t = new Task(ॲཧ); t.Start(); int result = t.Result; ResultϓϩύςΟΛ༻ͨ࣌͠Ͱɺݺͼग़͠ଆͷεϨο υ݁Ռ͕ฦͬͯ͘Δ·Ͱػ͢Δ
using System; using System.Threading; using System.Threading.Tasks; using System.Runtime.Remoting.Messaging;
namespace ConsoleProject { class TestDelegateAsync {
class MainClass { public static void Main(string[] args) { TestDelegateAsync test = new TestDelegateAsync(); TestDelegate d = test.DoWork; d.BeginInvoke(test.CallbackMethod, null); Console.ReadKey(); }
}
public delegate int TestDelegate();
//࣮ߦ͍ͨ͠ॲཧ public int DoWork() { Console.WriteLine("DoWork"); return 100; }
//AsyncCallbackͷγάωνϟʹैͬͨίʔϧόοΫϝιου public void CallbackMethod(IAsyncResult ar) { //BeginInvokeͷ݁ՌΛͬͯɺͦͷεϨου͔Β݁ՌΛநग़ͯ͠දࣔ TestDelegate @delegate = (TestDelegate)((AsyncResult)ar).AsyncDelegate; int result = @delegate.EndInvoke(ar); Console.WriteLine(result); } } } ࣮ߦ͍ͨ͠ॲཧ͕ೖΔσϦήʔτΛ༻ҙͯ͠ ࣮ߦ͍ͨ͠ॲཧΛॻ͘ γάωνϟʹैͬͨίʔϧόοΫϝιου ͜ͷΑ͏ʹͯ݁͠ՌΛಘΒΕΔ
namespace ConsoleProject { class MainClass { public static void Main(string[] args) { Console.WriteLine("Hello World!"); var a = new TestAsync(); //10͔Β1·Ͱදࣔ͢Δ͕ //ঢ়گʹԠͯ͡දࣔॱ͕มΘΔ for (int i = 10; i > 0; --i) a.Func(i); Console.ReadKey(); } }
namespace ConsoleProject { class MainClass { public static void Main(string[] args) { Console.WriteLine("Hello World!"); var a = new TestAsync(); //10͔Β1·Ͱදࣔ͢Δ͕ //ঢ়گʹԠͯ͡දࣔॱ͕มΘΔ Task[] tasks = new Task[10]; for (int i = 10; i > 0; --i) tasks[i - 1] = a.Func(i); Task.WaitAll(tasks); Console.WriteLine("End All Tasks."); } }
using System; using System.Threading.Tasks; using System.Threading;
class async_await { static void Main(string[] args) { var test = new AsyncTest(); //√3Λදࣔ͢Δɻ //ResultϓϩύςΟʹΑΓॲཧऴྃ࣌·ͰϝΠϯεϨουऴྃ͠ͳ͍ Console.WriteLine(test.SumTwoAndSqrt(1.0, 2.0).Result); } }
class AsyncTest { //2ͭͷҾΛͯ͠ฏํࠜΛऔΔϝιουɻ //Sqrt͕return͢Δͷdoubleܕ͔ͩɺasyncम০ʹΑΓTaskܕʹม͞ΕΔ public async Task SumTwoAndSqrt(double num1, double num2) { //ຊདྷͳΒRunTaskΛฦ͕͢ //awaitम০ʹΑΓ݁ՌͷdoubleܕมͷΈ͕நग़͞Εͨ double result = await Task.Run(() => num1 + num2); return Math.Sqrt(result);//લͷॲཧ݁ՌresultΛ༰қʹ͑Δ } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading;
class TPL { static void Main(string[] args) { var act = new Action[10]; for (int i = 0; i < 10; ++i) act[i] = new Action(Show); //Invokeશͯྃ͢Δ·ͰϝΠϯεϨου͕ऴྃ͠ͳ͍ Parallel.Invoke(act); Console.WriteLine("exit..."); }