C# 尽管存在差异。我认为这实际上是一种过时的样式,它只是通过示例等传播。使用此类查询的做法非常糟糕:return(从methodParams中的o开始,其中o==null)。Count()>0使用:返回methodParams.Any(o=>o==null)在

C# 尽管存在差异。我认为这实际上是一种过时的样式,它只是通过示例等传播。使用此类查询的做法非常糟糕:return(从methodParams中的o开始,其中o==null)。Count()>0使用:返回methodParams.Any(o=>o==null)在,c#,.net,parameters,null,C#,.net,Parameters,Null,尽管存在差异。我认为这实际上是一种过时的样式,它只是通过示例等传播。使用此类查询的做法非常糟糕:return(从methodParams中的o开始,其中o==null)。Count()>0使用:返回methodParams.Any(o=>o==null)在大收集时速度会快得多为什么要传递异常?为什么不直接抛出它呢?这比(x==null)检查更好/更容易吗?或者String.IsNotNullOrEmpty函数。它并不比String.IsNotNullOrEmpty好多少,只是把你关心的东西放在左


尽管存在差异。我认为这实际上是一种过时的样式,它只是通过示例等传播。使用此类查询的做法非常糟糕:
return(从methodParams中的o开始,其中o==null)。Count()>0使用:
返回methodParams.Any(o=>o==null)在大收集时速度会快得多为什么要传递异常?为什么不直接抛出它呢?这比(x==null)检查更好/更容易吗?或者String.IsNotNullOrEmpty函数。它并不比
String.IsNotNullOrEmpty
好多少,只是把你关心的东西放在左边。可以输入到其他函数(长度、连接)中。稍微好一点。@MartinCapodici同样,这会产生一种错觉,即在null(
model.Day
)上调用实例方法(
Default()
)是安全的。我知道扩展方法没有针对null进行检查,但我的眼睛没有意识到,他们已经将
想象成代码:
model?.Day?.Default()
:)有趣的是,默认情况下,编译后的应用程序不会引用JetBrains.Annotations.dll,因此您不必将其与应用程序一起分发:对于最新版本的C#,使用“nameof()”效果更好:抛出新的ArgumentNullException(nameof(arg));这样,如果您重构名称,如果在抛出语句中出现涟漪,C#8现在支持可为空的引用类型,这是您可以在项目中启用的编译器选项。有人知道这是否最终成为了C#8.0的一部分吗?@TroySteven是的,您必须通过Visual Studio中的设置选择它。@TroySteven这是关于它的文档。很好,所以看起来您必须在它开始工作之前启用它,这对于向后兼容性很好。
if (null == arg)
  throw new ArgumentNullException("arg");
NonNullable<string> s = null; // throw some kind of exception
private MyType _someVariable = TenantType.None;
[NotNullValidator(MessageTemplate = "Some Variable can not be empty")]
public MyType SomeVariable {
    get {
        return _someVariable;
    }
    set {
        _someVariable = value;
    }
}
Microsoft.Practices.EnterpriseLibrary.Validation.Validator myValidator = ValidationFactory.CreateValidator<MyClass>();

ValidationResults vrInfo = InternalValidator.Validate(myObject);
public static bool ContainsNullParameters(object[] methodParams)
{
     return (from o in methodParams where o == null).Count() > 0;
}
public static bool ContainsNullParameters(Dictionary<string, object> methodParams, out ArgumentNullException containsNullParameters)
       {
            var nullParams = from o in methodParams
                             where o.Value == null
                             select o;

            bool paramsNull = nullParams.Count() > 0;


            if (paramsNull)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var param in nullParams)
                    sb.Append(param.Key + " is null. ");

                containsNullParameters = new ArgumentNullException(sb.ToString());
            }
            else
                containsNullParameters = null;

            return paramsNull;
        }
public static string Default(this string x)
{
    return x ?? "";
}
if (model.Day.Default() == "")
{
    //.. Do something to handle no Day ..
}
public class Person
{
     public string Name { get; set; } // Not Null
     public string? Address { get; set; } // May be Null
}