标签: nullable

如何更好地从非可空类型初始化可空类型?

我的对象通常具有可空类型属性,用作SQL命令参数.

我下一步初始化它们:

public int? Amount
{
    get
    {
        int i;
        int? amount = null;
        if (Int32.TryParse(Request["amount"], out i))
        {
            amount = i;
        }
        return amount;
    }
}

command.Parameters.Add("@amount").Value = (object)this.Amount ?? DbNull.Value;
Run Code Online (Sandbox Code Playgroud)

如何重写这样的初始化代码以使其更短或更快

.net c# nullable

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

Nullables?检测它们

好吧,我仍然有点新的使用可空类型.

我正在为我的一个项目编写一个反射对象步行器,即时通讯即可设置反射属性的值,并使用从反射属性中检索的值.

我检索到的值仍然是object形式,它突然出现在我身上,因为我希望我的对象walker在无法找到某些东西时返回null,(我想要抛出一个异常,但我希望这会软失败什么时候出错了).

无论如何,一些值的IM设置/获取是decimal bool等等......所以我想通了,我应该只是没有设置非空值,但我意识到我仔仔不知道如何告诉decimaldecimal?

如果继承属性im设置的类型,是否足以键入ValueType

.net c# reflection nullable .net-2.0

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

Interlocked.Exchange可空小数

我想交换两个可以为空的十进制值,如下所示:

o2 = Interlocked.Exchange(ref o1, o2);
Run Code Online (Sandbox Code Playgroud)

类型'十进制?' 必须是引用类型才能在泛型类型或方法'System.Threading.Interlocked.Exchange(ref T,T)'中将其用作参数'T'.

有没有比这更好的想法:

decimal? temp = o1;
o1 = o2;
o2 = temp;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

.net c# exchange-server nullable decimal

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

如何在F#中使用Nullable抽象类型?

这是我想做的事情:

and [<AbstractClass>] Figure() =
    let mutable name : string = ""
    let mutable color : ColorType = WHITE   
    abstract member Name : string       
    member F.Color
        with get()  = color
        and set v   = color <- v
    abstract member motion : Dashboard -> SPosition -> ColorType -> list<SPosition * CellDashboard * bool>;
    override F.ToString() = name
and CellDashboard(addingFigure : Nullable<Figure>) as C =
    let mutable attacked    : bool      = false;
    let mutable cleaned     : bool      = false;
    let mutable _CellState …
Run Code Online (Sandbox Code Playgroud)

f# nullable

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

尝试用C#尽可能简洁

我正在寻找一种更简洁的方式在C#中表达以下测试,其中x是可以为空的int

英语:如果x有一个值并且y> x那么就做点什么

C#更简洁:

if(x.HasValue && y > x)
Run Code Online (Sandbox Code Playgroud)

类似地,如果我想将可以为空的布尔值(x)默认为false,我可能会写:

if(x ?? false)
{
    //x is true
}
else
{
    //x is either null or false
}
Run Code Online (Sandbox Code Playgroud)

代替:

if(x.HasValue() && x == true)
Run Code Online (Sandbox Code Playgroud)

非常感谢

c# nullable

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

如何在 xaml 元素中指定 null(例如,当传递给可为空类型的集合时)

我有一个我写的 WPF IValueConverter。我计划在很多地方使用它。它有一个公共属性,它是可为空的 DateTume 的集合。即列表例如

private List<DateTime?> _dates = new List<DateTime?>();
public List<DateTime?> Dates 
{ 
  get { return _dates; }
  set { _dates = value; }
}
Run Code Online (Sandbox Code Playgroud)

如何在 XAML 中传递一组值,包括空值?

我的尝试是

<myns:MyConverter x:key="MyName">
  <myns:MyConverter.Dates>
    <sys:DateTime>1 Jan 2014</sys:DateTime> <!-- this works -->
    <sys:DateTime /> <!-- unf this comes through as 1 Jan 0001 -->
    <sys:DateTime? /> <!-- invalid syntax with the ? character -->
  </myns:MyConverter.Dates>
</myns:MyConverter>
Run Code Online (Sandbox Code Playgroud)

.net wpf null xaml nullable

1
推荐指数
2
解决办法
2234
查看次数

在传递DateTime?变量到一个方法,编译器说它不能将null值转换为DateTime

我有一个TextBox控件,它应该存储一个日期.只要日期不是我的页面中的必填字段(我正在使用Web窗体),我传递的是DateTime?(可为空),而不是连接到数据库并插入适当值的方法的DateTime变量.它看起来像这样.

public void DatabaseMethod(DateTime? myDate)
{
// Insert the appropriate value into the database
}

// I'm calling the above method like this:
DatabaseMethod(String.IsNullOrWhiteSpace(txtContractMyDate.Text) ? null : Convert.ToDateTime(txtContractMyDate.Text));
Run Code Online (Sandbox Code Playgroud)

我从编译器收到的消息类似于"条件语句的类型无法确定,因为'null'和'System.DateTime'之间没有隐式转换".

我可以做以下事情:

DateTime? myDate = null;

if (!String.IsNullOrWhiteSpace(txtContractMyDate.Text))
{
    myDate = Convert.ToDateTime(txtContractStornoDate.Text);
}
Run Code Online (Sandbox Code Playgroud)

然后调用方法如:

DatabaseMethod(myDate);
Run Code Online (Sandbox Code Playgroud)

当然,这没关系,但我无法弄清楚为什么我从编译器得到声明的消息("条件语句的类型无法确定,因为'null'和'System之间没有隐式转换. DateTime'").

c# datetime arguments nullable

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

ASP.NET MVC 5 Razor抛出'Nullable对象必须有一个值'即使对象有值

我正在使用ASP.NET MVC 5与Entity Framework 6和Razor.我有以下代码:

[...]
@foreach (var item in Model) {
  <tr>
    <td>
        @item.Superpower.Title
    </td>
    <td>
[...]
Run Code Online (Sandbox Code Playgroud)

然而,@item.Superpower.Title一行InvalidOperationException告诉Nullable object must have a value.我,我已经使用了nullables,我确切地知道这个错误意味着什么.但问题是,我既没有可空的,也没有null价值.item不可空,有价值,item.Superpower不可空,有价值,item.Superpower.Title不可空,有价值.我可以简单地验证所有:

在此输入图像描述

我可以展开并查看双方的所有必需的属性item,并item.Superpower在这方面.为什么我会得到这个错误而没有无效的上下文?

c# asp.net asp.net-mvc nullable razor

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

给字符串一个空值

我需要一些有关如何在下面的代码片段中将此字符串设置为null值的信息.

[Index(IsUnique = true)]
[StringLength(450)]
public string StockCode
{
    get { return _stockCode; }
    set { _stockCode = value.ToUpper(); } //(ToUpper)<<-- Error
}
Run Code Online (Sandbox Code Playgroud)

当我尝试以正常方式执行此操作时,public string? StockCode我得到了错误,.ToUpper并说:

'System.Nullable'不包含'ToUpper'的定义,并且没有扩展方法'ToUpper'可以找到接受类型'System.Nullable'的第一个参数(你是否缺少using指令或汇编引用?)

我不是专家或专业C#编码器,所以我不知道如何将我的字符串设置为空值并仍然使用.ToUpper我试图这样做的方式.:( 任何意见,将不胜感激!

c# linq-to-entities nullable

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

C#链?? 不同类型的运算符

我正在为一个对象实现一个ToString方法.该方法看起来像:

public override string ToString()
{
    return "E" + (myNum ?? SQLIndex) + STK.ExtraLabel(areaType);
}
Run Code Online (Sandbox Code Playgroud)

其中myNum是一个可以为空的int,而SQLIndex只是一个int.

但权力已经决定,如果SQLIndex尚未设置(如果没有设置,则用于= -1),我们应该在那里放置"NEW"而不是-1.

所以我将SQLIndex更改为可以为空的int,但是这段代码不起作用,因为我在猜测?运算符不能返回int和string,即使int将被转换为字符串:

public override string ToString()
{
    return "E" + (myNum ?? SQLIndex ?? "NEW") + STK.ExtraLabel(areaType);
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用三元运算符来实现相同的效果,但为了便于阅读,有没有办法使用快捷方式?运营商在这?

c# nullable

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