标签: nullable

扩展方法中的类型推断

我确信之前已经提出过这个问题,但我仔细阅读了类似问题的搜索内容并没有得出答案.

我厌倦了检查Nullable是否有值.为什么我不能分配myNullable<int> yourAgeint myAge,如果得到一个例外 yourAge是空?此外,如果我们的任何一个年龄都为空,为什么我必须进行fxning检查以避免将'deafault'分配给fxning SqlParameter?我甚至不能做文明mySqlParm = myAge.HasValue ? myAge.Value : DBNull.Value.

可空类型的固定点是什么?我们仍然必须使用'-1'来表示pkId以避免可怕的Null.我们甚至不能添加我们自己的扩展menthods因为'等等'.

为什么甚至fxning根本没有参数?为什么我们不将所有日期存储为fxning varchar(10)?

.net nullable

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

C#班?在财产(这是什么意思?)

我正在为我的MCPD学习,这个示例类在ADO.net实体框架示例中显示.我还没遇到过?在OrderDate和EmployeeID等财产中,有人可以向我解释它的作用或含义吗?

public class Order
{
 public int OrderID { get; set; }

 public string CustomerID { get; set; }
 public int? EmployeeID { get; set; }
 public DateTime? OrderDate { get; set; }
 public DateTime? RequiredDate { get; set; }
 public DateTime? ShippedDate { get; set; }
 public int? ShipVia { get; set; }
 public decimal? Freight { get; set; }
 public string ShipName { get; set; }
 public string ShipAddress { get; set; }
 public string ShipCity { get; …
Run Code Online (Sandbox Code Playgroud)

c# nullable

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

使用可空类型时会发生NHibernate.MappingException

我使用nhibernate访问我的数据库,andromda生成我的映射文件.一切正常,只要我没有使用可空数据类型.我想要的是拥有一个类型为Nullables.NHibernate.NullableInt32Type的实体.我的数据库与"int NULL"(SQL Server)类型的列具有对应关系.相应的类也具有正确的数据类型(int?).但是当我尝试获取数据库的值时,我得到一个NHibernate.MappingException:

NHibernate.MappingException:为类型Namespace.SummaryAttribute指定的映射信息无效,请检查映射文件中是否存在属性类型不匹配----> System.InvalidCastException:Die angegebene Umwandlungistungültig.

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping
    xmlns="urn:nhibernate-mapping-2.2"
    default-cascade="none">

    <class
        name="Namespace.SummaryAttribute, Core"
        table="SUMMARY_ATTRIBUTE"
        dynamic-insert="false"
        dynamic-update="false"
        lazy="true">

        <id name="Id" type="Int64" unsaved-value="0">
            <column name="ID" sql-type="NUMERIC(19,0)"/>
            <generator class="native">
            </generator>
        </id>

        <property name="ShortName" type="String">
            <column name="SHORT_NAME" not-null="true" unique="false" sql-type="VARCHAR(255)"/>
        </property>

        <property name="LongName" type="String">
            <column name="LONG_NAME" not-null="true" unique="false" sql-type="VARCHAR(255)"/>
        </property>

        <property name="Description" type="String">
            <column name="DESCRIPTION" not-null="true" unique="false" sql-type="VARCHAR(255)"/>
        </property>

        <property name="IsVisible" type="Boolean">
            <column name="IS_VISIBLE" not-null="true" unique="false" sql-type="BIT"/>
        </property>

        <property name="DecimalPlaces" type="Nullables.NHibernate.NullableInt32Type, Nullables.NHibernate">
            <column name="DECIMAL_PLACES" not-null="false" unique="false" sql-type="INT"/>
        </property>
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

没有属性"DecimalPlaces"一切正常.即使我将属性更改为简单数据类型int. …

nhibernate nullable mappingexception andromda

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

C#中扩展方法中的Nullable嵌套类型

我试图为一个超酷的扩展IDictionary- GetValue如果没有设置默认值为null.这是我提出的代码(不起作用):

public static TValue GetValue<TKey, TValue> (this IDictionary<TKey,
    TValue> dictionary, TKey key, TValue defaultValue = null)
{
    TValue value;
    return dictionary.TryGetValue(key, out value)
        ? value
        : defaultValue;
}
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点nullables?(比如,不包括int等).

c# nullable

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

C#在构造函数中具有相同类型的可空对象

以下是我的代码:

class Phrase
{
    public String Name { get; private set; }
    public Head Head { get; private set; }
    public Phrase? Complement { get; private set; }

    public Phrase(String Name, Head Head, Phrase? Complement)
    {
        this.Name = Name;
        this.Head = Head;
        this.Complement = Complement;
    }

}
Run Code Online (Sandbox Code Playgroud)

这导致编译时错误说明

"类型'短语'必须是不可为空的值类型,才能在泛型类型或方法'System.Nullable'中将其用作参数'T'

我正在试图做的是有一个可为空类变量Complement,并允许它在构造函数中进行设置.我该如何做到最好?

c# nullable

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

如何显示可为空的DateTime类型的字符串表示?

用户提供"从"和"到"月份以生成报告(例如,从1个月回到13个月;如果他们在2016年2月15日选择此项,则返回值为2015年1月1日, 2016年1月1日).

我想允许用户从"from"或"to"组合框中选择最远的后面或最近的月份.我只想用最远的时间作为"从"和最接近的时间作为"to"以避免他们的混淆(他们可以做任何看起来很自然的事情).

所以我从这段代码开始:

int fromMonths = Convert.ToInt32(comboBoxProduceUsageFrom.Text);
DateTime RptParamsNominalFromDate = ReportSchedulerConstsAndUtils.SubtractMonthsFrom(fromMonths, nextGenerateAndSendDate);
int toMonths = Convert.ToInt32(comboBoxProduceUsageTo.Text);
DateTime RptParamsNominalToDate = ReportSchedulerConstsAndUtils.SubtractMonthsFrom(toMonths, nextGenerateAndSendDate);
Run Code Online (Sandbox Code Playgroud)

..然后我想将"从"日期设置为最晚的时间,并将"到"设置为更接近时间.我第一次尝试这个:

DateTime RptParamsFromDate;
DateTime RptParamsToDate;
if (RptParamsNominalFromDate > RptParamsNominalToDate)
{
    RptParamsFromDate = RptParamsNominalToDate;
    RptParamsToDate = RptParamsNominalFromDate;
}
else if (RptParamsNominalToDate > RptParamsNominalFromDate)
{
    RptParamsFromDate = RptParamsNominalFromDate;
    RptParamsToDate = RptParamsNominalToDate;
}
Run Code Online (Sandbox Code Playgroud)

...但是失败了," 使用未分配的局部变量'RptParamsFromDate'"(和"RptParamsToDate "的错误相同).

所以我尝试给DateTimes一个值/非值,如下所示:

DateTime RptParamsFromDate = null;
DateTime RptParamsToDate = null;
Run Code Online (Sandbox Code Playgroud)

...但是这给了我," 无法将null转换为'System.DateTime',因为它是一个不可为空的值类型 "

所以我再次设置动作并尝试对DateTimes进行nullablizing:

DateTime? RptParamsFromDate = null;
DateTime? RptParamsToDate = null;
Run Code Online (Sandbox Code Playgroud)

...但后来我得到," 'System.Nullable'不包含'ToLongDateString'的定义,并且没有扩展方法'ToLongDateString'接受类型'System.Nullable'的第一个参数'(你是否错过了使用指令或汇编参考?) …

c# datetime nullable unassigned-variable

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

如果泛型类型可为空,则返回null

我正在编写一个检查输出是否为函数的函数,DBNull如果泛型类型可以为null则返回null.如果不是,它只是抛出错误.

更新:添加了所有建议

public T Get<T>(string key)
{
    int ordinal = reader.GetOrdinal(key);
    if (reader.IsDBNull(ordinal))
    {
        if (typeof(T).GetTypeInfo().IsValueType && Nullable.GetUnderlyingType(typeof(T)) == null) // isn't a nullable field
            throw new InvalidCastException();
        else return default(T);
    }
    return reader.GetFieldValue<T>(ordinal);
}
Run Code Online (Sandbox Code Playgroud)

但是我不确定是否default(T)为每个可空字段返回null.如果现在有任何其他方法使它返回null?

c# generics nullable default-value mysql-connector

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

可空的<T>结构

我阅读了Nullable Structure并了解其中的大部分内容.但我不知道人们何时以及为何会使用它.

c# nullable structure

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

How to ensure a generic parameter is not Nullable?

I am trying to make a class GameOption that will hold three (really four) values:

  • Name of Option as string

  • An option as T

  • A default value as Nullable< T >

This how looks my class:

public class GameOption<T> {
    private T v;
    private string n;
    private T? def;
    public string Name { get => this.n; }
    public T Value { get => this.v; }
    public GameOption(T o, string name, T? def) {
        this.n = name;
        this.v = o;
    } …
Run Code Online (Sandbox Code Playgroud)

c# generics nullable

0
推荐指数
2
解决办法
70
查看次数

删除空值后,将IQueryable &lt;int?&gt;转换为IQueryable &lt;int&gt;

我有and和IQueryable<int>and 在较早的处理阶段IQueryable<int?>使用a从中删除了空值Where()。我现在希望UNION()在两个可查询对象之间执行a ,但是因为一个是可空类型,而另一个则不能。

我该如何解决?

c# linq nullable iqueryable

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