草庐IT

if-null-then-null

全部标签

c# - String.Empty 和 “” 和 null 有什么区别?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:WhatisthedifferencebetweenString.Emptyand“”""是否等同于String.Empty?哪个是初始化字符串值的首选?

c# - 在 null IEnumerables 上为 Count() 返回零

我已经厌倦了使用这样的代码:varcount=0;if(myEnumerable!=null){count=myEnumerable.Count();}这有点迂腐:varcount=(myEnumerable??newstring[0]).Count();有没有更简洁的方法来做到这一点?我曾经在IEnumerable上有一个(名字不好的)PhantomCount扩展方法,它使用了我的第一个代码示例,但它有一些味道(除了名字之外)。 最佳答案 问题实际上出在创建这些可枚举对象的任何方面。除非你有充分的理由,否则任何生成可迭代集合的东西

c# - IF Statement 多个条件,同一条语句

大家好,希望减少我的c#if语句中的代码,因为有几个重复因素,并且想知道是否可以使用trimmer解决方案。我目前有2个if语句需要执行相同的语句,但是唯一的变量是在未选中复选框时if语句的额外条件。我只是想知道是否有办法让它成为一条语句或使条件字符串成为变量,这里是代码的压缩版本:if(checkbox.checked){if(columnname!=a&&columnname!=b&&columnname!=c){"statement1"}}else{if(columnname!=a&&columnname!=b&&columnname!=c&&columnname!=A2){"s

c# - IDisposable 实现 - 'if (disposing)' 中应该包含什么

我一直在修复winforms应用程序中的一些内存泄漏问题,并注意到一些未明确处理的一次性对象(开发人员尚未调用Dispose方法)。Finalize方法的实现也无济于事,因为它没有进入if(disposing)子句。所有的静态事件注销和集合清除都放在了if(disposing)子句中。如果对象是一次性的,最好的做法是调用Dispose,但不幸的是,这种情况有时会发生如果有非托管对象、静态事件处理程序和一些托管集合需要在处置时清除。if(disposing)子句如何决定什么进什么出。Disposemethod.//Dispose(booldisposing)executesintwodi

c# - 将 'Set Next Statement' 强制为 'if' block 时出现 CLR System.NullReferenceException

背景我承认这不是正常代码执行期间可能发生的事情,但我在调试时发现了它,并认为它很有趣,可以分享。我认为这是由JIT编译器引起的,但欢迎任何进一步的想法。我已经使用VS2013复制了这个针对4.5和4.5.1框架的问题:设置要查看此异常,必须启用CommonLanguageRuntimeExceptions:DEBUG>异常...我已将问题的原因提炼为以下示例:usingSystem.Collections.Generic;usingSystem.Linq;namespaceConsoleApplication6{publicclassProgram{staticvoidMain(){v

c# - XmlCodeExporter 和可为 null 的类型

System.Xml.Serialization.XmlCodeExporter从XSD架构生成代码(以代码CodeDom形式)。但它有一些怪癖。例如一个可选元素:我希望这会生成一个类型为Nullable的相应代码成员,但它实际上创建了一个decimal类型的成员,然后是一个单独的SomethingSpecified应单独切换以指示空值的字段。这可能是因为该库是在引入可空类型之前创建的,但它导致代码非常不方便。是否可以调整此代码生成,或者是否有替代工具可以在这种情况下生成更好的代码?编辑:我知道我可以修改架构并添加nillable='true',但我不想更改架构来解决代码生成的限制。

c# - 为什么C#null在VB6中被翻译成Empty,而不是Nothing

我有一个引用VB6dll的C#应用程序。当我将null从C#传递到VB6dll函数时,null在VB6中被翻译为值Empty(值),而不是Nothing(对象)。例如://functioninvb6dllthatreferencedbyc#appPublicSubTestFunc(ByValoValueAsVariant){...ifoValueisNothingthensetoValue=someObjectendif...}//mainc#codeprivatevoidForm1_Load(objectsender,EventArgse){objecttestObject=newo

c# - "if (object is (string, Color))"c# 7.0 元组用法不起作用

我使用的是VisualStudio2017RC,我已经安装了System.ValueTuple包,它启用了新的c#7.0元组用法,但我无法让它在这种特定情况下工作:如您所见,第一种方法没有任何红色波浪线,而且很管用。但是尝试执行ois(string,Color)失败并出现不相关的错误:新的元组不能这样用吗?或者它只是包裹的当前状态?我已经将它更新到最新版本btw,此时是4.3.0。我读过thisMSDNpost但没有发现任何这样的用法。 最佳答案 Roslyncontainsteststhatensureusingtuplesinp

c# - Json.NET 序列化中有没有办法区分 "null because not present"和 "null because null"?

我在ASP.NETwebapi代码库中工作,我们在很大程度上依赖于通过JSON.NET自动支持将消息主体的JSON反序列化为.NET对象。作为为我们的一项资源构建补丁支持的一部分,我非常想区分JSON对象中不存在的可选属性与显式为null的同一属性。我的意图是将第一个用于“不要更改那里的内容”与“删除此内容”。有谁知道是否可以标记我的C#DTO,以便在它们被反序列化时JSON.NET可以告诉我它是哪种情况?现在它们只是作为null出现,我不知道为什么。相反,如果有人能想出一个更好的设计,不需要我这样做,同时仍然支持补丁动词,我很想听听你的建议。作为一个具体的例子,考虑将传递给put的这

c# - fileStream.CopyTo(memoryStream)后,memoryStream为null

所以,我有获取BitmapImage的函数,我需要将它保存到iso存储并转换为Base64(用于发送到服务器)。但是,从fileStream复制到memoryStream不成功。publicvoidSetImage(BitmapImagebitmap){if(isoFiles.FileExists(Settings.FILE_AVATAR_JPG))isoFiles.DeleteFile(Settings.FILE_AVATAR_JPG);varfileStream=isoFiles.CreateFile(Settings.FILE_AVATAR_JPG);varwb=newWrite