日期:2014-05-17  浏览次数:20865 次

java代码转换为C#代码的问题.
学习C#中.希望大家给点信心.
java中可以有以下实例化代码:

class1 c1 = new class1() {
            public void function1() {
                System.Console.WriteLine("blabla.");
            }
            public String toString() { return "bla"; }
        } 

这在C#中应该如何简洁实现?
另外,关于线程操作的Runnable接口\synchronized\wait\notify在C#中怎么实现?
------最佳解决方案--------------------
引用:
Java code??123456789101112    public static void main( String[] args ) {        class1 c1 = new class1( new interface1() {            public void interfacefunction1( var i2 ) {           ……

那就没办法了。不过可以这样:

class interface1Adapter : interface1
{
    private Action<object> f1;
    private Func<imt, int> f2;
    public interface1Adapter(Action<object> interfacefunction1, Func<imt, int> interfacefunc2)
    {
        f1 = interfacefunction1;
        f2 = interfacefunc2;
    }
    public void interfacefunction1(object i2) { f1(i2); }
    public int interfacefunc2(int p1) { return f2(p1); }
}


有了这个类就好办了
var c1 = new interface1Adapter(
    x => { Console.WriteLine("interface2 run"); },
    x => { Console.WriteLine("bla."); return 0; });

------其他解决方案--------------------
C#不支持完整功能的匿名类,不过支持委托,可以这么写:

var c1 = new {
            function1 = new Action(() => {
                Console.WriteLine("blabla.");
            }),
            toString() = new Func<string>(x =>"bla")
        };
c1.function1();
string s = c1.toString();
------其他解决方案--------------------
你指的简洁实现时 代码量敲得最少么?
------其他解决方案--------------------
var c1 = new {
            function1 = new Action(() => {
                Console.WriteLine("blabla.");