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

C#怀疑,找到数据类型

如何解决《C#怀疑,找到数据类型》经验,为你挑选了2个好方法。

我有以下变量:

string str1 = "1";
string str2 = "asd";
string str3 = "3.5";
string str4 = "a";

现在我需要找到每个字符串的数据类型,即如果删除引号则可以转换的数据类型.以下是我希望每个变量转换为:

str1 - 整数
str2 - 字符串
str3 - 双
str4 - char

注意:如果字符串有单个字符,它应该是char,尽管字符串可以有单个字母,我限制它.

仅供参考:这些值是从DataGrid获得的,我手动输入值.所以一切都变成了一个字符串.有没有办法做到这一点?



1> Noldorin..:

当然,没有明确的方法可以做到这一点,但如果您创建一个数据类型列表,您想按优先级排序,那么这样的事情就可以解决问题.

object ParseString(string str)
{
    int intValue;
    double doubleValue;
    char charValue;
    bool boolValue;

    // Place checks higher if if-else statement to give higher priority to type.
    if (int.TryParse(str, out intValue))
        return intValue;
    else if (double.TryParse(str, out doubleValue))
        return doubleValue;
    else if (char.TryParse(str, out charValue))
        return charValue;
    else if (bool.TryParse(str, out boolValue))
        return boolValue;

    return null;
}

只需在每个字符串上调用此函数,您就应该返回适​​当类型的对象.然后,简单的类型检查可以告诉您如何解析字符串.



2> Binary Worri..:

如果可以,请使用元数据

您必须猜测数据类型是什么,这不是一个好主意.

两件事情

1数据来自哪里?

如果它是一个数据库,你确定它们是字符串吗?如果它是一个数据库,应该返回一些元数据,告诉你这些字段的数据类型是什么.

如果它是一个Xml文件,是否有定义的模式将为您提供类型?

2如果你必须继续猜测.

请注意,您可以使用恰好是数字的字符串,但这些字符串是完全有效的字符串,例如电话号码,银行帐号,最好用字符串表示.这些数字也可以有很多数字,如果你将它们转换为双数,你可能会丢失一些数字到浮点不准确(你应该可以达到14或15位)

我现在肯定 - 因为我花了我的时间输入这个 - 有很多答案告诉你如何做到这一点(即首先是tryparse int,然后是double,然后测试char的长度,如果不是那么它是一个字符串等),但如果我是你,我会尽量不这样做,看看你是否有任何方法可以获得,或传递一些元数据,告诉你它什么类型,而不是它可能是什么类型

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