download original
using System;
using System.Collections.Generic;
namespace oklischat.cstest {
public class Test {
void inc(ref int i) {
i++;
}
void partest(int i, params object[] ds) {
Console.Out.Write("i={0}\n", i);
Console.Out.Write("{0} ds:\n", ds.Length);
foreach (object d in ds) {
Console.Out.Write("{0}\n", d);
}
}
// //error CS0504: The constant `oklischat.cstest.Test.cj' cannot be marked static
// // ("static" is implicit for constants)
// static const int ci = 42;
// static const int cj = ci + 5;
// //error CS0236: A field initializer cannot reference the nonstatic field, method, or property `oklischat.cstest.Test.ci'
// int ci = 42;
// int cj = ci + 5;
const int ci = 42;
const int cj = ci + 5;
//boxing.cs(34,21): error CS8025: Parsing error
// const int cf(int i) {
// return i+10;
// }
// const int ck = cf(cj);
//error CS0106: The modifier `readonly' is not valid for this item
// readonly int rf(int i) {
// return i+10;
// }
public delegate void MyEventType(int arg1, double arg2);
public event MyEventType myevt;
public void handler(/*const (unspported)*/ int arg1, double arg2) {
Console.Out.Write("handler, args={0} {1}\n", arg1, arg2);
}
public Test() {
int i = 42;
object io = (object)i;
int j = (int)io;
i++;
Console.Out.Write("{0} {1}\n", i,j);
inc(ref i);
Console.Out.Write("{0} {1}\n", i,j);
i*=i; i*=i; /*checked {*/ i*=i; /*}*/
Console.Out.WriteLine("i enlarged: {0}", i);
partest(42,3.5,6.7,7.6,"hello");
partest(42,new object[]{3.5,6.7,7.6},"hello");
Console.Out.Write("cj={0}\n", cj);
const int ci=23;
Console.Out.WriteLine("ci={0}\n", ci);
Console.Out.Write("explicit delegate call...\n");
MyEventType methPointer = new MyEventType(handler);
methPointer(100,33.332);
Console.Out.Write("call via event...\n");
myevt += new MyEventType(handler);
myevt += new MyEventType(handler);
myevt += new MyEventType(handler);
OtherClass oc = new OtherClass();
myevt += new MyEventType(oc.OtherHandler);
myevt += delegate(int i, double d) {
Console.Out.Write("anon delegate, args={0} {1}\n", i, d);
};
myevt(42, 23.55);
closureTest();
enumTest();
}
public delegate int Getter(); //QU: how to get rid of this
//declaration and define
//delegate types in-place?
public Getter getIncrementor() {
int i=0;
return delegate {
return i++;
};
}
public void closureTest() {
Getter incr1 = getIncrementor();
Getter incr2 = getIncrementor();
Console.Out.Write("next={0}\n", incr1());
Console.Out.Write("next={0}\n", incr1());
Console.Out.Write("next={0}\n", incr2());
Console.Out.Write("next={0}\n", incr2());
Console.Out.Write("next={0}\n", incr2());
Console.Out.Write("next={0}\n", incr2());
Console.Out.Write("next={0}\n", incr1());
}
public IEnumerable<int> SomeNumbers() {
yield return 42; yield return 23; yield break;
}
public void enumTest() {
foreach (int i in SomeNumbers()) { Console.WriteLine("{0}",i); }
}
public static void Main(string[] args) {
new Test();
}
}
public class OtherClass {
public void OtherHandler(int arg1, double arg2) {
Console.Out.Write("OtherHandler, args={0} {1}\n", arg1, arg2);
}
}
}
back to cs
(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>