在以下情况下,我经常遇到一个错误,例如"无法从'方法组'转换为'字符串'"
var list = new List<string>();
// ... snip
list.Add(someObject.ToString);
Run Code Online (Sandbox Code Playgroud)
当然最后一行有一个拼写错误,因为我忘记了之后的调用括号ToString.正确的形式是:
var list = new List<string>();
// ... snip
list.Add(someObject.ToString()); // <- notice the parentheses
Run Code Online (Sandbox Code Playgroud)
订阅活动有两种基本方式:
SomeEvent += new EventHandler<ArgType> (MyHandlerMethod);
SomeEvent += MyHandlerMethod;
Run Code Online (Sandbox Code Playgroud)
有什么区别,什么时候我应该选择一个而不是另一个?
编辑:如果它是相同的,那么为什么VS默认为长版本,使代码混乱?这对我来说毫无意义.
在C#中,这两行代码之间有什么区别(如果有的话)?
tmrMain.Elapsed += new ElapsedEventHandler(tmrMain_Tick);
Run Code Online (Sandbox Code Playgroud)
和
tmrMain.Elapsed += tmrMain_Tick;
Run Code Online (Sandbox Code Playgroud)
两者看起来完全相同.当你输入后者时,C#是否只是假设你是指前者?
创建新事件处理程序与直接将其分配给事件的实际差异,优缺点是什么?
_gMonitor.CollectionChanged += new NotifyCollectionChangedEventHandler(OnCollectionChanged);
Run Code Online (Sandbox Code Playgroud)
VS
_gMonitor.CollectionChanged += OnCollectionChanged;
Run Code Online (Sandbox Code Playgroud) 我刚刚意识到我可以通过两种方式添加事件处理程序:
考虑像这样的事件处理程序:
private void MyEventHandler()
{}
Run Code Online (Sandbox Code Playgroud)
方法1:实例化新的委托
MyObject.MyEvent += new Action(MyEventHandler);
Run Code Online (Sandbox Code Playgroud)
方法2:添加事件处理程序而不实例化新委托
MyObject.MyEvent += MyEventHandler;
Run Code Online (Sandbox Code Playgroud)
应该考虑这两种实现之间有什么区别吗?
我最近一直在玩HttpWebRequests,在教程中他们总是这样做:
IAsyncResult result = request.BeginGetResponse(
new AsyncCallback(UpdateItem),state);
Run Code Online (Sandbox Code Playgroud)
但new AsyncCallback似乎并不是必要的.如果UpdateItem有正确的签名,那么似乎没有问题.那么人们为什么要包括它呢?它有什么用吗?
在C#中,当注册事件处理程序时,您有两个选项(btn类型System.Windows.Controls.Button):
btn.Click += new RoutedEventHandler (ButtonClick)
和
btn.Click += ButtonClick.
它们之间的语义差异及其含义是什么?
订阅2种订阅方式有什么区别?
receiver.ConfigChanged += Config_ConfigChanged;
receiver.ConfigChanged += new EventHandler(Config_ConfigChanged);
Run Code Online (Sandbox Code Playgroud)
似乎它们都以相同的方式工作,但如果是这样,那么使用第二种方法有什么意义呢?
如果取消订阅,以下两种方法的工作方式是否相同?
receiver.ConfigChanged -= Config_ConfigChanged;
receiver.ConfigChanged -= new EventHandler(Config_ConfigChanged);
Run Code Online (Sandbox Code Playgroud) 当我使用resharper他总是说

有什么不同?
任何细节都会很好
谢谢大家.
让我们有这个代表:
delegate int Process (int x ,int y) ;
Run Code Online (Sandbox Code Playgroud)
而这个方法:
int Add (int x , int y)
{
return x+y ;
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
有什么区别:
Process MyProcess = Add ;
Run Code Online (Sandbox Code Playgroud)
并且:
Process MyProcess = new Process (Add) ;
Run Code Online (Sandbox Code Playgroud)