NullReferenceException
全部标签 我在C#中使用新的null条件运算符时遇到了一个有趣的System.NullReferenceException。如果“MyObject”为空,以下代码会给我一个NullReferenceException:awaitthis.MyObject?.MyMethod()如果“MyObject”为空,我本以为不会调用“MyMethod”,还是我误解了空条件运算符的用途? 最佳答案 您可以添加??运算符,因此如果?.返回空任务,请改用CompletedTask。await(this.MyObject?.MyMethod()??Task.C
这个问题在这里已经有了答案:Avoidingnullreferenceexceptions(18个答案)关闭3年前。我正在处理一个大型项目,即使有1000次自动化测试和100%的代码覆盖率,我们仍然会遇到大量错误。我们收到的大约95%的错误是NullReferenceExceptions。有什么方法可以在编译时强制执行null检查吗?除此之外,是否有任何方法可以在单元测试中自动强制执行null检查,而无需自己编写null情况的测试?
我在MSDN上读到:Thenullkeywordisaliteralthatrepresentsanullreference,onethatdoesnotrefertoanyobject.但是我看到下面的代码运行时没有抛出任何异常:int?i=null;vars=i.ToString();那么如果变量i为null,为什么我可以执行它的方法呢? 最佳答案 因为int?实际上是一个Nullable和Nullable是struct,和一个结构cannotbenull.就是这样Nullabletypeswork.它们不是引用值,所以它们不能
我的以下代码出现了一个奇怪的问题:varall=newFeatureService().FindAll();System.Diagnostics.Debug.Assert(all!=null,"FindAllmustnotreturnnull");System.Diagnostics.Debug.WriteLine(all.ToString());//throwsNullReferenceExceptionFindAll方法的签名是:publicListFindAll()通过代码我已经确认FindAll的返回值不为空,正如您从断言中看到的那样,“all”变量不为空,但在下一行中它似乎为
背景我承认这不是正常代码执行期间可能发生的事情,但我在调试时发现了它,并认为它很有趣,可以分享。我认为这是由JIT编译器引起的,但欢迎任何进一步的想法。我已经使用VS2013复制了这个针对4.5和4.5.1框架的问题:设置要查看此异常,必须启用CommonLanguageRuntimeExceptions:DEBUG>异常...我已将问题的原因提炼为以下示例:usingSystem.Collections.Generic;usingSystem.Linq;namespaceConsoleApplication6{publicclassProgram{staticvoidMain(){v
我在C#WebForms应用程序中使用RazorHelpers。以下代码在调用时编译并呈现A-OK:@helperMemberListItem(stringfirstname,stringlastname,stringavatarUrl){@firstname@lastname@avatarUrl}输出(对助手的两次调用):BryanArnold../../Resources/Images/Placeholders/generic-user-image.jpgDougBland../../Resources/Images/Placeholders/generic-user-image.
我有这个代码:usingDC=MV6DataContext;usingMV6;//BusinessLogicLayer//...publicDC.MV6DataContextdc=newDC.MV6DataContext(ConnectionString);IPip=newIP(Request.UserHostAddress);dc.IPs.InsertOnSubmit(ip);dc.SubmitChanges();//inBusinessLogiclayer:publicclassIP:DC.IP{publicIP(stringaddress){...}}在尝试InsertOnSub
我正在开发一个用C#(asp.net)构建的大型Web应用程序。我有一个简单的aspx页面,它向客户端浏览器提供本地化字符串以供在javascript控件中使用。要获取字符串,我执行以下操作:ResourceManager_resources=newResourceManager(_pathname,typeof(ARM).Assembly);ResourceSetrs=_resources.GetResourceSet(culture,false,false);//loopthroughrsandwritethekeys&valuesouttotheclientinplaintext
我有一个VS2010C#.NET4项目。问题是程序在调试期间不会因“NullReferenceException”错误而中断。输出窗口将显示以下内容:myProgram.exe中发生类型为“System.NullReferenceException”的第一次机会异常...但是调试器将退出该函数并继续运行程序的其余部分。如何更改此行为,以便调试器在遇到这些异常时中断? 最佳答案 转到调试->异常->搜索NullReferenceException并选中“抛出”复选框。 关于c#-我如何允许
我有以下代码行:varselectedDomainID=lkuDomainType.EditValue.Equals(null)?string.Empty:lkuDomainType.EditValue;有时这会生成一个NullReferenceException。我不明白的是为什么。我的代码的全部意义不是检查null并且如果是则分配string.empty吗?当我checkinDEBUG时,它说明EditValue==null那么我错过了什么? 最佳答案 使用lkuDomainType.EditValue==null,否则您将尝试