C#类型后缀为十进制

Max*_*ich 30 c# double types type-inference decimal

我不知道对于我想要实现的目的,正确的措辞是什么,所以它可能已经在网上发布.如果是,请善待.

好吧基本上我有这个方法.

public static T IsNull<T>(IDataReader dr, String name, T nullValue)
{
    return Helpers.IsNull(dr, dr.GetOrdinal(name), nullValue);
}

public static T IsNull<T>(IDataReader dr, Int32 index, T nullValue)
{
    if (dr.IsDBNull(index))
    {
        return nullValue;
    }
    else
    {
        return (T)dr.GetValue(index);
    }
}
Run Code Online (Sandbox Code Playgroud)

被称为Helpers.IsNull(dr, "UnitWholeSale", 0d)和我得到的错误是"无法从双精度转换为十进制".

现在我知道我可以使用decimal.Zero但有一些方法我可以简单地去0dec或类似的东西?我只是讨厌那些长的快捷方式值(特别是在调用带有20个参数的构造函数时).

Gab*_*abe 70

0m是你怎么说(decimal)0因为m是后缀意味着decimal.

其他后缀f用于float,dfor double,ufor unsignedlfor long.它们可以是大写或小写,u可以按l任意顺序组合成一个ulong.

虽然后缀不区分大小写,但请记住它在C#语言规范第2.4.4.2节中所说的内容:

作为一种风格问题,建议在编写long类型的文字时使用"L"代替"l",因为很容易将字母"l"与数字"1"混淆.

  • 并小心那个小写el.快,是5432l == 54321真还是假?:-) (9认同)
  • @Eric:我一直很幸运能够很容易地区分出一个字体,但是我引用了规范的建议,因为你提醒我使用大写字母. (5认同)

Ada*_*son 17

0m会给你一个decimal0值.

为了完整起见,

0.0 - double
0f  - float
0m  - decimal
Run Code Online (Sandbox Code Playgroud)