- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要检查一个对象是否可以转换为特定的数据类型,并想出了这个:
public static bool TryParseAll(System.Type typeToConvert, object valueToConvert)
{
bool succeed = false;
switch (typeToConvert.Name.ToUpper())
{
case "DOUBLE":
double d;
succeed = double.TryParse(valueToConvert.ToString(), out d);
break;
case "DATETIME":
DateTime dt;
succeed = DateTime.TryParse(valueToConvert.ToString(), out dt);
break;
case "INT16":
Int16 i16;
succeed = Int16.TryParse(valueToConvert.ToString(), out i16);
break;
case "INT":
Int32 i32;
succeed = Int32.TryParse(valueToConvert.ToString(), out i32);
break;
case "INT32":
Int32 i322;
succeed = Int32.TryParse(valueToConvert.ToString(), out i322);
break;
case "INT64":
Int64 i64;
succeed = Int64.TryParse(valueToConvert.ToString(), out i64);
break;
case "BOOLEAN":
bool b;
succeed = Boolean.TryParse(valueToConvert.ToString(), out b);
break;
case "BOOL":
bool b1;
succeed = bool.TryParse(valueToConvert.ToString(), out b1);
break;
}
return succeed;
}
请问除了这个还有其他办法吗?哪个更动态、更高效?
谢谢!
最佳答案
您应该使用 TypeDescriptor 类:
public static T Convert<T>(this string input)
{
var converter = TypeDescriptor.GetConverter(typeof(T));
if(converter != null)
{
//Cast ConvertFromString(string text) : object to (T)
return (T)converter.ConvertFromString(input);
}
return default(T);
}
当然,如果转换失败,这将抛出异常,因此您需要尝试/捕获它。
关于c# - 适用于所有数据类型的动态 TryParse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26135340/
C# 中的 Single.TryParse 和 float.TryParse 有什么区别? float a, b; float.TryParse("0.01", out a); Single.TryP
在 C# 中,为什么 int.TryParse 不能解析数字分组(但 double.TryParse 可以)? int i1 = 13579; string si1 =
我已按值或其名称将代码写到TryParse枚举,如下所示。如何扩展此代码以包含具有Flags属性的枚举? public static bool TryParse(this T enum_typ
我构建了一个玩具电子表格来帮助学习 F#。当我处理新单元格的文本时,我将其存储为可识别类型。为了解析它,我觉得我应该能够做类似的事情: let cv = mat
我有一个枚举(假设是 DemoEnum),我想解析该枚举的值。我正在写 DemoEnum value; if(DemoEnum.TryParse("input", out value)) { t
我构建了一个玩具电子表格来帮助学习 F#。当我处理新单元格的文本时,我将其存储为可识别类型。为了解析它,我觉得我应该能够做类似的事情: let cv = mat
我有以下代码。 using System; class program { static void Main() { string StrNumber = "100TG
这个问题在这里已经有了答案: How to use int.TryParse with nullable int? [duplicate] (5 个答案) 关闭 4 年前。 我想制作一个方法 int
今天我读了一篇文章,其中写道我们应该始终使用 TryParse(string, out MMM) 进行转换而不是 Convert.ToMMM()。 我同意这篇文章,但在那之后我陷入了一种情况。 当字符
我需要验证某些变量是否可以创建有效的日期时间,如果可以,则在不抛出异常的情况下忽略它。 我有以下代码 int y, m, d, h, mi, s, tz; ogrFeature.GetFieldAs
我正在尝试运行 NUnit 测试来搜索字符串中的数字。我正在使用 TryParse,但它给了我一个错误:Error1:'int.TryParse(string, out int)' 的最佳重载方法匹配
我需要检查一个对象是否可以转换为特定的数据类型,并想出了这个: public static bool TryParseAll(System.Type typeToConvert, object val
Facebook API 函数 FacebookOAuthResult.TryParse() 未解析。我为 TryParse 函数提供了正确的输入参数。我已经在该项目的 Visual Studio 引
我是编程新手,我正在尝试创建一个循环,其中 while 条件基于变量,但我不知道它的正确语法。这就是我想要做的,即使它可能不被允许......我认为。 using System; using Syst
我知道它不会抛出异常,因此它可能会明显更快,而且,您很可能使用它来将输入转换为您可以使用的数据,所以我认为它没有被这样使用通常会在性能方面产生如此大的差异。 无论如何,我看到的例子都是 if/else
我想尝试将 string 解析为 DateTime?,如果失败,则将值设置为 null。我能想到的唯一方法如下,但它看起来不是很整洁。 DateTime temp; DateTime? whatIAc
在我的应用程序中,我有一个文本框 - txtDiscount,管理员可以在其中为某个用户设置折扣百分比,也可以不设置。在后端我想保存数据所以现在我有这个: double? discount = nul
我尝试按如下方式解析来自外部系统的日期时间戳: DateTime expiration; DateTime.TryParse("2011-04-28T14:00:00", out expiration
我在让 TryParse 为我正常工作时遇到问题。我有一个值列表,我几乎可以肯定这些值是有效的(因为它们来 self 们系统中的另一个组件),但我想确保有适当的错误处理。 这是我的值(value)观的
我想覆盖 bool 的 TryParse 方法来接受"is"和“否”。我知道我想使用的方法(如下),但我不知道如何覆盖 bool 的方法。 ... bool TryParse(string value
我是一名优秀的程序员,十分优秀!