草庐IT

null_object

全部标签

c# - string str 和 string str=null 的区别

我想知道当我们声明一个变量时内部到底发生了什么,就像这样:stringtr;stringtr=null;在调试时,我注意到这两个值都只显示空值。但是当使用reftr而不初始化null时,它会给出错误,而第二行不会。请帮助我深入了解它 最佳答案 你的第一条语句只是声明,你的第二条语句是声明+初始化。stringtr;//JustDeclarationstringtr=null;//Declaration+Initialization.如果您尝试仅在声明中使用tr,您可能会遇到编译时错误。(第一种情况)例如:stringtr;//Jus

c# - 如果参数值为 null,则传递字符串

我需要在一个函数中传递多个参数。我的要求是参数值不能为NULL。如果参数为NULL,改为传递“TBD”。例如getBookInfo(stringbookId,stringbookName,stringbookAuthor)//ifanyoftheparametersisNULL,pass"TBD"stringinparameter我该怎么做?我可以使用三元运算符来做到这一点吗?如果可以,怎么做? 最佳答案 在调用您的方法时尝试这样做:getBookInfo(bookId??"TBD",bookName??"TBD",bookAuth

c# - 将 null 分配给可为空的 int 时出错 - "The value ' null' 对属性无效”

我的View模型中有这个属性:[DisplayName("Region")]publicint?RegionId{get;set;}我将我的View模型传递给我的Controller,如果RegionId为null,它会在ModelState.IsValid处失败。如果我向它传递一个整数,它就可以正常工作。错误信息是:Thevalue'null'isnotvalidforRegion在检查ModelState.IsValid之前,我也试过调用它,但我得到了同样的错误:if(viewModel.RegionId==null)viewModel.RegionId=(int?)null;这里

c# - 如何知道我的 linq 查询是否返回 null

我有这个linq查询:varmyQuery=fromQinmyDataContextselectQ.Name当我尝试这样做时:listView.ItemsSource=myQuery它有时会抛出异常,因为myQuery中没有元素我尝试了很多方法,例如:if(myQuery.count!=0)或if(myQuery.Any())但没有任何效果,那么我如何确定我的查询是否返回空值? 最佳答案 您可以将结果实现为列表:varmyQuery=(fromQinmyDataContextselectQ.Name).ToList();现在您可以查

c# - Image.Save 崩溃 : {"Value cannot be null.\r\nParameter name: encoder"}

我正在尝试将图像保存到MemoryStream中,但在某些情况下会失败。代码如下:以下代码成功:Imageimg=Bitmap.FromStream(fileStream);MemoryStreamms=newMemoryStream();img.Save(ms,img.RawFormat);//Thissucceeds.以下代码失败:Imageimg=Bitmap.FromStream(fileStream);Imagethumb=img.GetThumbnailImage(thumbWidth,thumbHeight,null,System.IntPtr.Zero);MemoryS

c# - 我以为 Object.Equals(Object, Object) 支持按位相等而不是值相等

静态方法Object.Equals(Object,Object)支持引用类型的引用相等和值类型的按位相等,其中按位相等比较的对象具有相同的二进制表示,而比较的值相等对象具有相同的值,即使它们具有不同的二进制表示形式。例如,由于i1和b1是不同的类型,它们没有相同的二进制表示,因此Object.Equals(Object,Object)返回false:inti1=100;byteb1=100;Console.WriteLine(Object.Equals(i1,b1));//falseObject.Equals(Object,Object)在比较d1和d2时也应该返回false(因为这两

c# - LINQ 在 SQL 语句中生成额外的 IS NULL 条件

我正在编写一些LINQ来根据电子邮件获取记录,但是,生成的SQL包含一个额外的ISNULL条件,它不需要存在,因为我正在检查参数值在将条件添加到查询之前在代码中为null。我的LINQ代码是:if(email!=null){query=query.Where(r=>r.Email==email);}由此产生的SQL条件为:(([Extent1].[Email]=@p__linq__0)OR(([Extent1].[Email]ISNULL)AND(@p__linq__0ISNULL)))(([Extent1].[Email]ISNULL)AND(@p__linq__0ISNULL))就

c# - 如何让 Null Coalesce 运算符在 ASP.NET MVC Razor 中工作?

我有以下内容,但它因NullReferenceException而失败:@item.FundPerformance.Where(xx=>fund.Id==xx.Id).FirstOrDefault().OneMonth??-OneMonth定义为publicvirtualdecimal?OneMonth{get;set;}失败时它的值为空。我认为NullCoalesce运算符会测试它是否为null,如果是,则返回运算符右侧的值?我需要更改什么才能使其正常工作? 最佳答案 如您所写,razor语法以“OneMonth”结尾。这??被解

c# - 为什么 ItemContainerGenerator.ContainerFromIndex() 返回 null 以及如何避免这种行为?

我正在使用这个片段来分析我在数据网格上选择的行。for(inti=0;i循环运行顺利,但在处理某些索引时,第二行抛出空异常。MSDN的文档说,如果“项目未实现”,ItemContainerGenerator.ContainerFromIndex(i)将返回null,但这并不能帮助我猜测如何获得所需的值。如何扫描所有行?还有其他办法吗?更新如here所述,我正在使用此片段读取CheckBox.所以我根本不能使用绑定(bind)或ItemSource除非我改变了很多东西。而我不能。我在做代码维护。 最佳答案 试试这个,DataGridR

c# - 如何在 C# 中从 System.Array 转换为 object[]

我有一个COM函数需要object[]作为参数:foo(object[]values)我想将一些enum字段传递给它,所以我使用以下内容:object[]fields=(object[])Enum.GetValues(typeof(SomeEnumType));但是,当我尝试将fields传递给foo(...)时,即[foo(fields)]我得到一个错误:"Unabletocastobjectoftype`SomeEnumType[]'totype'system.Object[]'.谁能告诉我我做错了什么? 最佳答案 如异常所述,