相关疑难解决方法(0)

如何检查对象是否可以为空?

如何检查给定对象是否可为空,换句话说如何实现以下方法...

bool IsNullableValueType(object o)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:我正在寻找可以为空的值类型.我没有记住ref类型.

//Note: This is just a sample. The code has been simplified 
//to fit in a post.

public class BoolContainer
{
    bool? myBool = true;
}

var bc = new BoolContainer();

const BindingFlags bindingFlags = BindingFlags.Public
                        | BindingFlags.NonPublic
                        | BindingFlags.Instance
                        ;


object obj;
object o = (object)bc;

foreach (var fieldInfo in o.GetType().GetFields(bindingFlags))
{
    obj = (object)fieldInfo.GetValue(o);
}
Run Code Online (Sandbox Code Playgroud)

obj现在指的是type bool(System.Boolean)的对象,其值等于true.我真正想要的是一个类型的对象Nullable<bool>

所以现在作为一个解决方法我决定检查o是否可以为空并在obj周围创建一个可空的包装器.

.net c# nullable

191
推荐指数
9
解决办法
9万
查看次数

结合struct和new()泛型类型约束

最近有理由细读可空文件,我注意到,可为空的定义是这样的:

public struct Nullable<T> where T : struct, new()
Run Code Online (Sandbox Code Playgroud)

我是(错误的)理解结构总是有一个公共无参数构造函数,如果这是正确的,new()类型约束在这里添加了什么?

c# generics c#-4.0

6
推荐指数
1
解决办法
1828
查看次数

标签 统计

c# ×2

.net ×1

c#-4.0 ×1

generics ×1

nullable ×1