小编Sar*_*age的帖子

是否可以创建一个接受(可空)值类型和引用类型的C#泛型方法?

我想创建一个接受值类型引用类型参数的简单方法,即int是value,string是reference.

所以这就是我的开始:

public bool areBothNotNull<T>(T? p1, T? p2)
{
    return (p1.HasValue && p2.HasValue);
}
Run Code Online (Sandbox Code Playgroud)

所以我希望能够像这样使用它:

var r1 = areBothNotNull<int>(3, 4); // will be true
var r2 = areBothNotNull<int>(3, null); // will be false
var r3 = areBothNotNull<string>("three", "four"); // will be true
var r4 = areBothNotNull<string>(null, "four"); // will be false
Run Code Online (Sandbox Code Playgroud)

但我遇到的第一个问题是

类型'T'必须是非可空值类型才能在泛型类型或方法'System.Nullable'中将其用作参数'T'

为了继续,我向我的方法添加一个struct约束

public bool areBothNotNull<T>(T? p1, T? p2) where T : struct
Run Code Online (Sandbox Code Playgroud)

但是现在该方法不接受基于字符串的调用,并给出了这个错误:

类型'string'必须是非可空值类型,以便在泛型类型或方法中将其用作参数'T'.

这可能吗?或者为什么我们阻止这样做?

.net c# generics value-type reference-type

12
推荐指数
1
解决办法
9102
查看次数

重复调用ConfigurationManager.AppSettings获取appsetting值的性能问题?

我正在开发一个代码库,它有很多相同的ConfigurationManager.AppSetting调用.

这听起来像是一个可能的性能问题吗?

或者因为数据非常小是微不足道而且不"昂贵"?不断返回文件获取数据,或.NET运行时缓存文件/值/调用?

如果这不是性能问题,那么它只是一种访问应用程序配置值的无组织方法,应该重新考虑是为了更清晰,更一致地实现访问设置吗?

.net performance appsettings

9
推荐指数
1
解决办法
3537
查看次数