这是我的一个奇怪的要求。我知道即使我的问题也很混乱。这是我想知道的。
我有两个字符串变量。我需要对字符串变量中的基础值的数据类型进行相等比较。对于前。
string firstVariable = "123"; // It contains integer value. i.e. I can convert it to integer value
string secondVariable = "string" // It contains string value.
现在我需要比较这两个字符串的基础值的数据类型是否相同。我怎么能这样做?
更新:感谢大家的澄清和解答。如果我知道一个变量的类型怎么样? 例如:
int firstVariable;
string secondVariable = "123".
是否可以检查第一个变量的类型是否等于secondVariable的转换值。当我将firstVariable声明为int
时,并不意味着它总是int
类型。我的意思是,我知道一个变量的类型和其他变量是字符串,我想要比较firstvariable的数据类型和secondVariable的value数据类型的相等性。
Convert.ChangeType
在上述情况下是否有帮助?
我知道这是一个愚蠢的问题,但出于对语言特征探索的好奇,我想知道这一点。
答案 0 :(得分:4)
没有“基础数据类型”这样的东西。
谁说“123”不仅仅是包含数字1,2和3的字符串?将值转换为字符串后,有关您从转换的值的任何信息(包括其类型)都将丢失。
答案 1 :(得分:1)
从我的脑袋写下,所以可能会有错误:
class StringTypeEqualityComparer : IEqualityComparer<string, string>
{
public bool Equals(string x, string y)
{
int tempInt;
if (Int32.TryParse(x, out tempInt) && (Int32.TryParse(y, out tempInt))
return true;
bool tempBool;
if (Boolean.TryParse(x, out tempBool) && Boolean.TryParse(y, out tempBool))
return true;
float tempFloat;
if (Single.TryParse(x, out tempFloat) && Single.TryParse(y, out tempFloat))
return true;
// And whatever other types you want to compare...
return false;
// But what if two regular strings should also evaluate to equal?
}
}
答案 2 :(得分:0)
为什么需要通过基础数据类型来比较它们?只需将它们比作字符串。或者如果你有另一个变量作为字符串,只需通过调用ToString()
将其转换为字符串,并在字符串级别进行比较。
答案 3 :(得分:0)
要做到这一点,你必须有一个有限的可能数据类型列表,并确保你的字符串内容的类型不明确。然后,对于每种类型,您可以尝试将字符串转换为它,这样您就可以找到它实际上是什么类型。