Tag: null

C#空传播运算符/条件访问表达式&if块

c#-6.0中的Null传播运算符/条件访问表达式看起来非常方便。 但我很好奇它是否有助于解决检查子成员是否为null然后在if块内的所述子成员上调用布尔方法的问题: public class Container{ IEnumerable Objects {get;set;} } public Container BuildContainer() { var c = new Container(); if (/* Some Random Condition */) c.Objects = new List{1,2,4}; } public void Test() { var c = BuildContainer(); //Old way if ( null != c && null != c.Objects && c.Objects.Any()) Console.Write(“Container has items!”); //C# 6 […]

更简单的写空或空的方式?

我确定我错过了一些东西。 对于某个项目,我需要检查字符串是空还是空。 有没有更简单的方法来写这个? if(myString == “” || myString == null) { …

|| 使用C#的Linq中的(或)运算符

我正在使用linq过滤选择的MessageItems。 我编写的方法接受一堆可能为null的参数。 如果它们为null,则应忽略该文件的条件。 如果它不为null,则使用它来过滤结果。 这是我的理解,当做一个|| operation是C#,如果第一个表达式为true,则不应计算第二个表达式。 例如 if(ExpressionOne() || ExpressionTwo()) { // only ExpressionOne was evaluated because it was true } 现在,在linq,我正在尝试这个: var messages = (from msg in dc.MessageItems where String.IsNullOrEmpty(fromname) || (!String.IsNullOrEmpty(fromname) && msg.FromName.ToLower().Contains(fromname.ToLower())) select msg); 我原以为这会是合理的,因为String.IsNullOrEmpty(fromname)将等于true而String.IsNullOrEmpty(fromname)的第二部分 不会跑。 然而,它确实运行,第二部分 msg.FromName.ToLower().Contains(fromname.ToLower())) 抛出空引用exception(因为fromname为null)!! – 我得到一个经典的“对象引用未设置为对象的实例”exception。 有帮助吗?

为什么在构造函数中抛出exception导致空引用?

为什么在构造函数中抛出exception导致空引用? 例如,如果我们运行下面的代码,则teacher的值为null,而st.teacher则不是(创建了Teacher对象)。 为什么? using System; namespace ConsoleApplication1 { class Program { static void Main( string[] args ) { Test(); } private static void Test() { Teacher teacher = null; Student st = new Student(); try { teacher = new Teacher( “”, st ); } catch ( Exception e ) { Console.WriteLine( e.Message ); } Console.WriteLine( […]

空文本框是空字符串还是null?

有问题的文本框涉及我的代码中的if语句,这是有效的 if (textbox.text != “”) { do this } 我很好奇,如果一个空文本框将被视为空字符串或空语句。

C#对象不为null,但(myObject!= null)仍然返回false

我需要在对象和NULL之间进行比较。 当对象不是NULL时,我用一些数据填充它。 这是代码: if (region != null) { …. } 这是有效的,但是在某些时候循环和循环时,region对象是非null(我可以在调试模式下看到其中的数据)。 在调试时一步一步,它不会进入IF语句…当我使用以下表达式进行快速监视时:我看到(region == null)返回false,AND(区域!= null )也返回错误… 为什么以及如何? 更新 有人指出对象是==和!=重载: public static bool operator ==(Region r1, Region r2) { if (object.ReferenceEquals(r1, null)) { return false; } if (object.ReferenceEquals(r2, null)) { return false; } return (r1.Cmr.CompareTo(r2.Cmr) == 0 && r1.Id == r2.Id); } public static bool operator […]

如何检查String是否为null

我想知道是否有一个特殊的方法/技巧来检查String对象是否为null。 我知道String.IsNullOrEmpty方法但我想区分null String和空String(= “” )。 我应该简单地使用: if (s == null) { // blah blah… } ……还是有另一种方式?

为什么null需要显式类型转换?

以下代码无法编译: //int a = … int? b = (int?) (a != 0 ? a : null); 为了编译,需要将其更改为 int? b = (a != 0 ? a : (int?) null); 由于b = null和b = a都是合法的,这对我来说没有意义。 为什么我们必须将null转换为int? 为什么我们不能简单地为整个表达式提供一个显式类型转换(我知道在其他情况下可能)?

如何使用.NET XmlSerializer使值类型为空?

让我们假设我有这个对象: [Serializable] public class MyClass { public int Age { get; set; } public int MyClassB { get; set; } } [Serializable] public class MyClassB { public int RandomNumber { get; set; } } XmlSerializer会像这样序列化对象: 0 4234 我怎样才能使该物业成为可空? IE:当它低于0时,没有序列化属性Age? 我尝试使用Nullable,但它将我的对象序列化为: 4234 通过阅读MSDN文档,我发现了这个: 您不能将IsNullable属性应用于键入为值类型的成员,因为值类型不能包含nullNothingnullptra null引用(在Visual Basic中为Nothing)。 此外,对于可为空的值类型,您不能将此属性设置为false。 当这些类型为nullNothingnullptra null引用(在Visual Basic中为Nothing)时,它们将通过将xsi:nil设置为true来序列化。 来源: http : //msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute.isnullable.aspx 我理解值类型不能设置为null。 值类型始终设置为某个值。 […]

成员访问中的问号在C#中意味着什么?

有人可以向我解释以下代码中成员访问中的问号是什么意思? 它是标准C#的一部分吗? 尝试在Xamarin Studio中编译此文件时出现解析错误。 this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null)); AnalyzerFileReference.cs第195行