当前位置:  开发笔记 > 编程语言 > 正文

如何转换Decimal至T?

如何解决《如何转换Decimal至T?》经验,为你挑选了1个好方法。

我在NumbericUpDown控件上构建了一个包装器.包装器是通用的,可以支持int吗?加倍?

我想写一个方法,将执行以下操作.

public partial class NullableNumericUpDown : UserControl where T : struct
{
  private NumbericUpDown numericUpDown;


  private T? Getvalue()
  {
    T? value = numericUpDown.Value as T?; // <-- this is null :) thus my question
    return value;
  }}

当然小数和双数之间没有强制转换?还是int?所以我需要使用某种转换方式.我想避免切换或if表达式.

你会怎么做?

为了澄清我的问题,我提供了更多代码......



1> aku..:

目前尚不清楚你将如何使用它.如果你想双重创建GetDouble()方法,对于整数 - GetInteger()

编辑:

好的,现在我想我理解你的用例

试试这个:

using System;
using System.ComponentModel;

static Nullable ConvertFromString(string value) where T:struct
{
    TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
    if (converter != null && !string.IsNullOrEmpty(value))
    {
        try
        {
            return (T)converter.ConvertFrom(value);
        }
        catch (Exception e) // Unfortunately Converter throws general Exception
        {
            return null;
        }
    }

    return null;
}

...

double? @double = ConvertFromString("1.23");
Console.WriteLine(@double); // prints 1.23

int? @int = ConvertFromString("100");
Console.WriteLine(@int); // prints 100

long? @long = ConvertFromString("1.1");
Console.WriteLine(@long.HasValue); // prints False

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有