草庐IT

virtual-functions

全部标签

c# - 为什么我会收到 "The modifier ' virtual'is not valid for this item“错误?

我正在尝试使用以下模型创建mvc应用程序:(代码很大。我认为它对您来说更容易理解)publicclassJob{publicintJobId{get;set;}publicstringName{get;set;}publicListGetJobs(){ListjobsList=newList();jobsList.Add(newJob{JobId=1,Name="Operator"});jobsList.Add(newJob{JobId=2,Name="Performer"});jobsList.Add(newJob{JobId=3,Name="Head"});returnjobsLi

c# - 在方法覆盖中更改 params 修饰符

我知道params修饰符(将数组类型的一个参数转换为所谓的“参数数组”)不是方法签名的一部分。现在考虑这个例子:classGiraffid{publicvirtualvoidEat(int[]leaves){Console.WriteLine("G");}}classOkapi:Giraffid{publicoverridevoidEat(paramsint[]leaves){Console.WriteLine("O");}}编译时没有警告。然后说:varokapi=newOkapi();okapi.Eat(2,4,6);//willnotcompile!给出错误(方法“Eat”没有重

c# - 更改继承类中的抽象方法签名

假设我有一个名为Engine的类作为抽象基类。我还有派生自它的ElectrictEngine和FuelEngine类。我想创建一个为引擎加油的方法。我是否应该将其作为基类级别的抽象方法并以通用方式命名,例如fillUpEnergy?问题是,如果我有一个电动引擎,该方法采用的参数数量与燃料引擎需要传递的参数数量不同。因此,方法的签名不同。此外,是否有任何聪明的方法可以将通用方法用于两个引擎,但将其包装在更具体的名称中?例如:对于燃料发动机,“加油”,对于电动发动机,“充电电池”?同时对用户隐藏泛型方法? 最佳答案 在这种情况下,我会为

c# - 使用 "Expression Bodied Functions and Properties"有什么好处

这个问题在这里已经有了答案:Expression-bodiedfunctionmembersefficiencyandperformanceinC#6.0(2个答案)关闭6年前。我确实看到很多人使用该新功能,但使用这些表达式有什么好处?Examples:publicoverridestringToString()=>string.Format("{0},{1}",First,Second);publicstringText=>string.Format("{0}:{1}-{2}({3})",TimeStamp,Process,Config,User);这个问题不同于thisone,因为

c# - Azure Functions 如何将应用程序设置添加到绑定(bind)

我正在尝试使用我的Azure函数的应用设置添加一些自定义绑定(bind)。我只需要从我的设置中接收一个字符串。我想从我的设置中获取simpleValue。{"bindings":[{"name":"someValue","type":"stringSetting","connection":"simpleValue","direction":"in"}],"disabled":false}并在Run方法中获取它:staticvoidGetOrders(TraceWriterlog,stringsomeValue){log.Info(someValue);}有可能吗?也许还有其他方法可以

c# - 在 Azure Function 中运行 .exe 可执行文件

我有可执行文件abcd.exe(它包含/合并了许多.dll)。是否可以为abcd.exe创建AzureFunctions并在AzureCloudFunctions中运行它?abcd.exe应用程序:System.Diagnostics.Processprocess=newSystem.Diagnostics.Process();System.Diagnostics.ProcessStartInfostartInfo=newSystem.Diagnostics.ProcessStartInfo();startInfo.WindowStyle=System.Diagnostics.Proc

c# - 调试 C++/Cli : <Unknown function> and no Locals

我正在尝试使用C#程序集和C++/Cli程序集调试项目。C#中定义的接口(interface)由C++/Cli类继承,后者又调用nativeC++类。在C++和C#程序集以及启动.exe中都启用了混合模式调试。现在,当我尝试调试C++部分时,它变得很棘手;如果我只是在C++部分设置断点,它们就不会被击中(尽管我知道它们被击中是因为日志(等)被写入并且在那里抛出异常实际上会正确地抛出它)。当我在调用混合模式程序集之前在C#中的最新调用处设置断点时,我可以进入C++/Cli代码,甚至可以进入native部分。但是,调用堆栈显示为MyMixedMode.dll!Line...而且我无法检查任

C# 和 WUAPI : BeginDownload function

首先,我没有任何面向对象编程的经验。我在学校创建了我的VB脚本和一些Java,仅此而已。所以我的问题很可能就在那里。但是尽管如此,在过去的几天里,我一直在尝试整合一个小应用程序,让我可以扫描、选择和安装Windows更新。到目前为止,借助互联网上的一些帖子,我已经能够理解大部分引用资料,现在我可以选择和下载更新。到目前为止,我已经能够使用以下代码下载一组更新:UpdateCollectionCurrentInstallCollection=(UpdateCollection)e.Argument;UpdateDownloaderCurrentDownloader=CurrentSess

c# - ListView 控件中的闪烁(OwnerDraw、Virtual)

这个问题可能被认为是Flickeringinlistviewwithownerdrawandvirtualmode的后续问题.我在虚拟模式中有一个ListView控件,我尝试执行自定义绘图。项目渲染是通过以下方法覆盖完成的:protectedoverridevoidOnDrawItem(DrawListViewItemEventArgseventArgs)如引用问题中所述,自定义绘图会在鼠标悬停事件时引入闪烁。调试器告诉我发生这种情况是因为触发了过多自定义绘制事件。现在-所引用问题的公认答案告诉我们:Thisisabugin.NET'sListViewandyoucannotgetar

c# - C#中如何检测虚方法是否被重写

这个问题在这里已经有了答案:DetectifamethodwasoverriddenusingReflection(C#)(9个回答)关闭6年前。是否可以判断虚方法是否被覆盖:classABase{publicvoidDoSomething(objectp){p.Process();if(/*DoSomethingExtraisimplemented*/)DoSomethingExtra(p);}publicvirtualvoidDoSomethingExtra(objectp){}}classADerived{publicoverridevoidDoSomethingExtra(ob