小编Don*_*Don的帖子

在Settings.settings中允许使用Nullable int类型?

我有一个属性,我想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)

c#

25
推荐指数
1
解决办法
4847
查看次数

为什么Double.TryParse()对包含double.MaxValue或double.MinValue的字符串返回false?

我有静态方法,它接受一个输入字符串,如果字符串代表一个数字,则返回原始输入字符串.如果字符串不表示数字,则处理输入字符串并返回转换后的字符串.我正在编写测试用例.我试图验证含有两种输入字符串double.MinValuedouble.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吗?

c#

15
推荐指数
2
解决办法
7033
查看次数

ERRORLEVEL 可靠吗?

由于 ERRORLEVEL 是一个环境变量,所以在我有机会在我的批处理文件中检查它之前,是否可以更改它的值?

batch-file

5
推荐指数
1
解决办法
2921
查看次数

不为变量分配新实例是不好的编码风格?

在我的程序的顶部,我有一个看起来像这样的代码段

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)

这减少了代码的大小,但我想它也简化了它.我可以看到变量用于调试的有用性,但我不认为这是一个很好的理由.其他人可能不同意.

非变量版本是否被视为不良编码风格?

c# coding-style

4
推荐指数
1
解决办法
204
查看次数

为什么在期望单个参数构造函数时调用两个参数构造函数?

我的基类中有以下两个构造函数:

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 ).

有人能告诉我为什么会这样吗?

c#

0
推荐指数
1
解决办法
146
查看次数

标签 统计

c# ×4

batch-file ×1

coding-style ×1