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

新手C# 问几个语法的问题
1:

ServiceLocator.Register<ITideRMLiveRepository>(() => new TideRMLiveRepository(connection_session));

        public static void Register<T>(Func<T> instanceCreator) where T : class
        {
            RegisterInternal(CreateKey<T>(), instanceCreator);
        }

Register的参数不是Func么 这个不是委托一个函数么
传参的时候 () => new TideRMLiveRepository(connection_session) 这是什么意思?
怎么给了一个实例?


            ServiceLocator.Register<RMMappingService>(delegate
            {
                return new RMMappingService();
            });

这里 加了delegate关键字就可以传入一个函数了?

2:
public static T Resolve<T>() where T : class

我知道那个where 是修饰T这个泛型的 但是:不是继承或者接口么。。。这放个class是什么意思?

3:lamba问题
假设
List<int> xx = new List<int>();
xx.ForEach(x=>x=x+1);
是不是只能做基于元素的事情
比如
我想
foreach(var item in xx)
{
Console.Write(item);
}
这样就没法翻译成lamba表达式?

------解决方案--------------------
1、楼主看看这篇文章《温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件 》,应该就明白了
http://www.cnblogs.com/yjmyzz/archive/2009/11/23/1608818.html
2、“T : class”表示T是class这种类型
3、xx.ForEach(item=>Console.Write(item));其实像这个问题,楼主要想知道行不行,打开VS输几行代码试验一下就知道了。