草庐IT

dispatch_apply

全部标签

c# - 是什么导致这里出现 "extension methods cannot be dynamically dispatched"?

编译错误'System.Data.SqlClient.SqlConnection'hasnoapplicablemethodnamed'Query'butappearstohaveanextensionmethodbythatname.Extensionmethodscannotbedynamicallydispatched.Considercastingthedynamicargumentsorcallingtheextensionmethodwithouttheextensionmethodsyntax.现在,我知道如何解决该问题,但我正试图更好地了解错误本身。我有正在构建的类来利

c# - 在事件分派(dispatch)之前检查 null ...线程安全吗?

有些事情让我感到困惑,但从来没有造成任何问题......推荐的调度事件的方式如下:publiceventEventHandlerSomeEvent;...{....if(SomeEvent!=null)SomeEvent();}在多线程环境中,此代码如何保证另一个线程不会在检查null和调用事件之间更改SomeEvent的调用列表? 最佳答案 正如您所指出的,在多个线程可以同时访问SomeEvent的情况下,一个线程可以检查SomeEvent是否为null并确定它是否为null。就在这样做之后,另一个线程可以从SomeEvent中删

c# - 不能将 lambda 表达式用作动态分派(dispatch)操作的参数,而不先将其转换为委托(delegate)或表达式树类型

我正在使用.NET4.5和VS2013,我有一个获取dynamic的查询来自数据库的结果。dynamictopAgents=this._dataContext.Sql("selectt.create_user_idas\"User\",sum(t.netamount)as\"Amount\"fromtransactiondetailtwheret.update_date>sysdate-7groupbyt.create_user_id").QueryMany();以下语句因编译错误而失败Cannotusealambdaexpressionasanargumenttoadynamical

c# - C# 中的双重分派(dispatch)?

我听过/读过这个词,但不太明白它的意思。我应该在什么时候使用这种技术以及如何使用它?谁能提供一个好的代码示例? 最佳答案 访问者模式是一种以面向对象的方式进行双重调度的方式。当您想根据运行时的类型而不是编译时的类型为给定参数选择使用哪种方法时,它很有用。双重dispatch是多重dispatch的特例。当您在一个对象上调用一个虚拟方法时,这被认为是单分派(dispatch),因为调用哪个实际方法取决于单个对象的类型。对于双重分派(dispatch),对象的类型和方法唯一参数的类型都会被考虑在内。这类似于方法重载决策,不同之处在于参数

c# - Dispatcher.BeginInvoke : Cannot convert lambda to System. 委托(delegate)

我正在尝试调用System.Windows.Threading.Dispatcher.BeginInvoke。该方法的签名是这样的:BeginInvoke(Delegatemethod,paramsobject[]args)我试图向它传递一个Lambda而不是必须创建一个委托(delegate)。_dispatcher.BeginInvoke((sender)=>{DoSomething();},newobject[]{this});它给我一个编译器错误,说我can'tconvertthelambdatoaSystem.Delegate.委托(delegate)的签名以一个对象为参数,

C#/林克 : Apply a mapping function to each element in an IEnumerable?

我一直在寻找一种使用映射函数(以Linq兼容的方式)将IEnumerable的每个元素转换为其他元素的方法,但我没有找到任何东西。对于一个(非常简单的)例子,它应该能够做类似的事情IEnumerableintegers=newList(){1,2,3,4,5};IEnumerablestrings=integers.Transform(i=>i.ToString());但是我还没有找到任何东西。我的意思是,编写实现此目的的扩展方法非常简单(基本上,它所需要的只是将源Enumerator包装到一个新类中,然后编写一些样板代码来委托(delegate)对它的调用),但我原以为这是一个相当基

c# - 如何解决Operator '!=' cannot be applyed to operands of type 'T' and 'T'

这个问题在这里已经有了答案:Can'toperator==beappliedtogenerictypesinC#?(13个答案)关闭4年前。对于int类型,此代码片段按预期工作:publicclassTest{publicintValue{get=>_Value;set{if(_Value!=value)_Value=value;}}privateint_Value;}当int被通用的T替换时,编译器会报错:Operator'!='cannotbeappliedtooperandsoftype'T'and'T'为什么会出现这种情况,有什么办法可以解决吗?

c# - 这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection

这个问题在这里已经有了答案:HowdoIupdateanObservableCollectionviaaworkerthread?(7个答案)关闭2年前。我有一个DataGrid,它通过异步方法从ViewModel填充数据。我的DataGrid是:我正在使用http://www.amazedsaint.com/2010/10/asynchronous-delegate-command-for-your.html在我的View模型中实现异步方式。这是我的View模型代码:publicclassMainWindowViewModel:WorkspaceViewModel,INotifyCo

javascript - Math.min.apply(0, array) - 为什么?

我刚刚浏览了一些JavaScript代码(Raphaël.js)并遇到了以下行(略微翻译):Math.min.apply(0,x)其中x是一个数组。你到底为什么要这样做?行为似乎是“从数组x中取最小值。” 最佳答案 我在发布自己的问题时意识到了答案:这是在JavaScript中获取数组x最小值的最简洁的方法。第一个论点完全是任意的;我发现0令人困惑,因为代码直觉上意味着“取0和x的最小值”,但事实并非如此。使用Math对象对人类可读性更有意义,但Raphael.js作者痴迷于缩小,0缩短了三个字节。参见http://ejohn.or

javascript - 'call/apply' 和 'bind' 有什么区别

这个问题在这里已经有了答案:Javascriptcall()&apply()vsbind()?(24个答案)关闭9年前。varobj={x:81,getX:function(){console.log(this.x)}};vargetX=obj.getX.bind(obj);//useobjas'this';getX();//81vargetX=function(){obj.getX.apply(obj);}getX();//also81bind和call/apply的用法看起来很像,我想知道它们有什么区别。上面的两个getX函数是一样的吗?