我有一个属性,我想int?在我的Settings.settings文件中键入.当我使用时,int?我得到运行时故障:
System.NullReferenceException:对象引用未设置为对象的实例..
我可以使用字符串类型作为解决方法,其中检查null工作,但我必须解析字符串并在解析不起作用时处理错误.
能够将值设置为null允许我将属性保存在设置文件中,同时明显没有设置任何值.未设置时,我使用编程的默认值:
int? configuredNumberOfLimits = Settings.Default.RequiredNumberOfLimits;
if ( configuredNumberOfLimits == null )
{
requiredNumberOfLimits = DEFAULT_REQUIRED_NUMBER_LIMITS;
}
Run Code Online (Sandbox Code Playgroud) 我有静态方法,它接受一个输入字符串,如果字符串代表一个数字,则返回原始输入字符串.如果字符串不表示数字,则处理输入字符串并返回转换后的字符串.我正在编写测试用例.我试图验证含有两种输入字符串double.MinValue或double.MaxValue原封不动地返回.我已经阅读了很多论坛,包括StackOverflow,并提出了以下逻辑:
string doubleMax = double.MaxValue.ToString();
double d;
CultureInfo cultureInfo = new CultureInfo("en-US", true);
if (Double.TryParse(doubleMax, NumberStyles.Any, cultureInfo.NumberFormat, out d))
{
Console.WriteLine("parsed");
}
else
{
Console.WriteLine("couldn't parse");
}
Run Code Online (Sandbox Code Playgroud)
问题是Double.TryParse()总是返回false.我TryParse()用了很多不同的方式打电话,结果总是一样的,假的.
这个逻辑工作,如果我使用decimal.MinValue(),int.MinValue()或float.MinValue().
有人能告诉我为什么我的逻辑不起作用double.MinValue吗?
由于 ERRORLEVEL 是一个环境变量,所以在我有机会在我的批处理文件中检查它之前,是否可以更改它的值?
在我的程序的顶部,我有一个看起来像这样的代码段
var XXXAssembler = new XXXAssembler(ctx);
XXXAssembler.LoadXXX();
var YYYAssembler = new YYYAssembler(ctx );
YYYAssembler.LoadYYY();
var ZZZAssembler = new ZZZAssembler(ctx);
ZZZAssembler.LoadZZZ();
Run Code Online (Sandbox Code Playgroud)
在上面的逻辑中,我使用每个变量一次来调用相应的加载器,我不在其他任何地方使用变量.
我可以将代码更改为此
new XXXAssembler(ctx).LoadXXX();
new YYYAssembler(ctx ).LoadYYY();
new ZZZAssembler(ctx).LoadZZZ();
Run Code Online (Sandbox Code Playgroud)
这减少了代码的大小,但我想它也简化了它.我可以看到变量用于调试的有用性,但我不认为这是一个很好的理由.其他人可能不同意.
非变量版本是否被视为不良编码风格?
我的基类中有以下两个构造函数:
protected ExternalSystemException( params Object[] args )
: this( null, null, args ) {}
protected ExternalSystemException( String propertyKeySuffix,
params Object[] args ) : this( propertyKeySuffix, null, args ) {}
Run Code Online (Sandbox Code Playgroud)
我的子类有以下构造函数:
public InvalidPathToOutputFiles(string invalidPath)
: base(invalidPath) {}
Run Code Online (Sandbox Code Playgroud)
我的客户端逻辑实例化子类,如下所示:
throw new ChildClass( "goofy" );
Run Code Online (Sandbox Code Playgroud)
当我逐步完成逻辑时,我意外地在参数的基础构造函数中结束( String propertyKeySuffix, params Object[] args ).我期望调用其他基类构造函数,即( params Object[] args ).
有人能告诉我为什么会这样吗?