草庐IT

delegated-properties

全部标签

c# - MethodInvoke 委托(delegate)或 lambda 表达式

两者有什么区别?Invoke((MethodInvoker)delegate{checkedListBox1.Items.RemoveAt(i);checkedListBox1.Items.Insert(i,temp+validity);checkedListBox1.Update();});对比Invoke((MethodInvoker)(()=>{checkedListBox1.Items.RemoveAt(i);checkedListBox1.Items.Insert(i,temp+validity);checkedListBox1.Update();}));有什么理由使用lam

c# - 公约问题: When do you use a Getter/Setter function rather than using a Property

令我印象深刻的是,在尝试操作类中的字段时应该使用C#中的属性。但是当涉及到复杂的计算或数据库时,我们应该使用getter/setter。这是正确的吗?什么时候对属性使用s/getter? 最佳答案 .NET设计指南在Propertiesvs.Methods中提供了这个问题的一些答案。部分。基本上,属性与字段具有相同的语义。你不应该让一个属性抛出异常,属性不应该有副作用,顺序不重要,属性应该相对快速地返回。如果这些事情中的任何一个可能发生,最好使用一种方法。该准则还建议使用返回数组的方法。在决定是使用属性还是方法时,如果我将其视为字段

c# - 匿名方法和委托(delegate)

我试图理解为什么BeginInvoke方法不接受匿名方法。voidbgWorker_ProgressChanged(objectsender,ProgressChangedEventArgse){if(InvokeRequired){//Won'tcompileBeginInvoke(delegate(objectsender,ProgressChangedEventArgse){bgWorker_ProgressChanged(sender,e);});}progressBar1.Increment(e.ProgressPercentage);}它告诉我“无法从‘匿名方法’转换为‘S

c# - 应该在引发事件的类内部还是外部声明委托(delegate)?

我见过各种事件处理的例子。这是一个:EventSample.有时我看到委托(delegate)在将引发事件的类外部声明(如上面的链接所示),有时在内部(我认为它应该被声明)。对我来说,在将引发事件的类中声明事件更有意义。原因是该类将声明的事件实际上只是辅助方法等的一些糖衣,它们实际上是在对委托(delegate)进行添加、减去和调用等操作。有什么最佳实践吗?是否有时您想在外部声明委托(delegate),而有时又想在内部声明委托(delegate)?如果是这样,应该如何决定要做什么? 最佳答案 通常,现在您会创建自己的派生自Even

c# - 属性(property)(没有额外处理)与公共(public)领域

这个问题在这里已经有了答案:Whatisthedifferencebetweenafieldandaproperty?(33个答案)关闭3年前。每当有关于属性可信度的问题时,我发现大部分讨论都是围绕函数/方法与属性展开的。但我也想知道令人信服的原因,即直接使用具有关联私有(private)字段的属性与公共(public)字段本身,以防最常见的获取/设置行为没有其他处理,我的意思是这样publicstringCustomerName;对比privatestringcustomerName;publicstringCustomerName{get{returncustomerName;}s

c# - 流利的 NHibernate "Could not resolve property"

我已经阅读了很多关于相同错误的问题,但没有一个与我的确切问题相匹配。我正在尝试使用FluentNHibernate访问一个对象的属性,该对象本身是根对象的一部分。一些答案说我需要使用投影,其他人说我需要使用连接,我认为它应该通过延迟加载来工作。这是我的两个类以及Fluent映射:美术课publicclassArtist{publicvirtualintId{get;set;}publicvirtualstringName{get;set;}publicvirtualIListAlbums{get;set;}publicvirtualstringMusicBrainzId{get;set

c# - 无法分配给委托(delegate)具有不太具体的参数类型的匿名方法

我能够分配一个方法M来委托(delegate)对象d具有不太具体的参数类型,但是当我想分配一个具有相同签名的匿名方法时作为M到d的方法,我得到一个错误。这是为什么?classderivedEventArgs:EventArgs{}delegatevoidnewDelegate(objecto,derivedEventArgse);staticvoidMain(string[]args){newDelegated=M;//okd=(objecto,EventArgse)=>{};//error}publicstaticvoidM(objecto,EventArgse){}

c# - 委托(delegate) : Method name expected error

我正在尝试让以下简单的委托(delegate)示例正常工作。根据我从中获取的一本书应该没问题,但我得到了一个Methodnameexpected错误。namespaceTestConsoleApp{classProgram{privatedelegatestringD();staticvoidMain(string[]args){intx=1;Dcode=newD(x.ToString());}}}有什么帮助吗? 最佳答案 删除():Dcode=newD(x.ToString);您想指定方法,而不是执行。

c# - 了解 Lambda 表达式和委托(delegate)

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我已经尝试解决这个问题很长时间了(阅读在线博客和文章),但到目前为止没有成功。什么是委托(delegate)?什么是Lambda表达式?两者的优缺点?何时使用其中一个或另一个的最佳实践?提前致谢。

c# - 为什么委托(delegate)逆变对值类型不起作用?

此代码段未在LINQPad中编译。voidMain(){(new[]{0,1,2,3}).Where(IsNull).Dump();}staticboolIsNull(objectarg){returnarg==null;}编译器的错误信息是:Nooverloadfor'UserQuery.IsNull(object)'matchesdelegate'System.Func'它适用于字符串数组,但不适用于int[]。这显然与拳击有关,但我想知道详细信息。 最佳答案 给出的答案(值类型不存在差异)是正确的。当可变类型参数之一是值类型时