标签: nullable

为什么在可以分配Null的类型时使用Nullable?

我正在使用一个库,并在使用我已经制作的函数时注意到一些奇怪的东西(我必须在哪里进行投射).

该库的功能定义如下

public DateTime? GetDate(){..}
Run Code Online (Sandbox Code Playgroud)

这有什么意义?为什么不让它成为常规DateTime并且null如果在获取日期时出现错误则正常返回?我错过了关于Nullable类型的重要内容吗?

c# nullable

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

实体框架 - 可空外键错误

我有一个网站表,其中有一个客户表的外键.网站并不总是会有一个关联的客户端,但是当我在没有指定客户端的情况下保存网站时,它会出错,因为Website.ClientID是一个i​​nt32(不可为空)并且设置为0.

我尝试将我的EF图中的关系更改*为网站的旁边和客户端旁边的0..1然后它给出一个错误,说它不能为ClientID做0..1,因为它不可为空.然后我将Website.ClientID更改为可为空,但现在它给出了此错误:

TothSolutions.msl(69,10) : error 3031: Problem in mapping fragments starting 
at line 69:Non-nullable column Website.ClientID in table Website is mapped to 
a nullable entity property.
Run Code Online (Sandbox Code Playgroud)

如何设置依赖对象可以为空的外键关系?

entity-framework nullable

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

使用EnumType.None或Nullable <EnumType>?

枚举通常用于定义类的特定属性的状态,比如在某种对象模型中.对于其中一些属性,状态'此属性未设置'是有效的.

在这些情况下,我应该使用零None枚举值,还是使属性类型可以为空?

public MyEnum Property { get; set; }

public enum MyEnum {
    None = 0,
    Value1,
    Value2
}
Run Code Online (Sandbox Code Playgroud)

要么

public MyEnum? Property { get; set; }

public enum MyEnum {
    Value1,
    Value2
}
Run Code Online (Sandbox Code Playgroud)

c# enums nullable object-model

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

在C#中使用可空的SQL数据的最佳实践是什么?

我倾向于这样做,例如接受整数的方法:

DoSomethingWithThisInt((int)dbObj.nullableInteger);
Run Code Online (Sandbox Code Playgroud)

但是我通常也会确保这个代码永远不会发生,除非它有一个值,有时这意味着我必须首先检查null,这需要更多行代码.

有没有更好的方法,或者我只是通过简单的方式做到这一点?

c# sql casting nullable

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

如何从`Object?`nullable中取出一个对象?

我正在尝试使用可选参数SpriteFont = myFont工作制作方法.因为spritefont不是编译时常量,所以我不能使用它,所以我决定尝试SpriteFont? = null:

void MyMethod(int x, SpriteFont? font = null)
{
    SpriteFont f;
    if (font == null) f = defaultFont; else f = font; // Cannot convert type 'Microsoft.Xna.Framework.Graphics.SpriteFont?' to 'Microsoft.Xna.Framework.Graphics.SpriteFont'
}
Run Code Online (Sandbox Code Playgroud)

如何拿出我SpriteFontSpriteFont?

UPD:默认情况下,这可能是类型无法从可空转换为基类型的问题.(SpriteFont)font仍然导致"无法转换".

UPD2:SpriteFont默认情况下可以为空.不过,我现在知道如何使用nonNullable?.

c# nullable

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

十进制? - Nullable对象必须具有值

我正在使用RazorVS2013中使用VB.NET MVC 5.1

siq.Price是一个十进制?

我正在尝试检查siq.Price是否有值,如果是,则将其打印为货币.我在尝试访问.Value属性时收到此错误,其中true为.HasValue返回true的元素:

可以为空的对象必须具有值.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:Nullable对象必须具有值.

我尝试了这两行代码,认为它们应该没有问题,但收到了上面的错误:

@IIf(siq.Price.HasValue, siq.Price.Value, "N/A")
   'and
@IIf(siq.Price.HasValue, siq.Price.Value.ToString("C"), "N/A")
Run Code Online (Sandbox Code Playgroud)

一旦我从TruePart中删除了.Value,它就开始工作了:

@IIf(siq.Price.HasValue, siq.Price, "N/A")
    'and
@IIf(siq.Price.HasValue, String.Format("{0:C}", siq.Price), "N/A")
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么会这样吗?!我很困惑.

注意:如果Price有值,这段代码就可以自己运行,但是在IIf()中没有:

@siq.Price.Value.ToString("C")
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net-mvc nullable invalidoperationexception razor

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

在C#中检查可空的bool是否为真的最快方法是什么?

想知道是否有更简单的方法来检查可空的bool是否为真.

我发现自己做了很多像这样的代码变得非常笨重.有没有更快的方法呢?

bool? x = false;
if (x.hasValue && x.Value) ...
Run Code Online (Sandbox Code Playgroud)

似乎必须有一个干净的更快的方法来检查真实

c# nullable

0
推荐指数
3
解决办法
1919
查看次数

使用有什么区别?和C#中的if if null块?

使用??if (foo == null) {...} else {...}在C#之间有区别吗?

c# null nullable

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

从使用三元运算符的方法返回可空值

我在使用?:运算符的方法中返回可空类型时遇到了一些困难.

例如,这有效:

    public static Int32? RunInt32Query(string query, KeyValueCollection parameters)
    {
        object scalar = RunScalarQuery(query, parameters);

        if (scalar != null)
        {
            return Convert.ToInt32(scalar);
        }
        else
        {
            return null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是这个例子不起作用,它不会编译:

    public static Int32? RunInt32Query(string query, KeyValueCollection parameters)
    {
        object scalar = RunScalarQuery(query, parameters);

        return (scalar != null) ? Convert.ToInt32(scalar) : null;
    }
Run Code Online (Sandbox Code Playgroud)

据我了解,这两种方法在高水平上几乎完全相同,但显然不是?

c# nullable

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

合并可以为空的对象的属性?

您好,有没有办法制定如下所示的条件?如果field为null则为false else field.Property?

class Node
{
    public bool IsFilled;
}

class Holder
{
    Node nodeBuffer;
    public bool IsFilled => this.nodeBuffer?.IsFilled ?? false; 
}
Run Code Online (Sandbox Code Playgroud)

我该怎么说if nodeBuffer is null then false else nodeBuffer.IsFilled呢?

c# nullable

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