[英]Equality comparison of the datatype of two strings value in C#
我有一个奇怪的要求。 我知道,即使我的问题也令人困惑。 这是我想知道的。
我有两个字符串变量。 我需要对字符串变量中基础值的数据类型进行相等比较。 对于前。
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的值数据类型的相等性。
在上述情况下, Convert.ChangeType
是否会有所帮助?
我知道这是一个愚蠢的问题,但是出于对语言功能探索的好奇,我想知道这一点。
没有所谓的“基础数据类型”。
谁说“ 123”不仅仅是包含数字1、2和3的字符串? 将值转换为字符串后,有关转换后的值(包括其类型)的所有信息都将丢失。
从我的头上写下,可能会(会)出现错误:
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?
}
}
为什么需要按基础数据类型比较它们? 只需将它们比较为字符串即可。 或者,如果您有另一个变量作为字符串,只需调用ToString()
将其转换为字符串,然后在字符串级别进行比较。
为此,您必须具有有限的可能数据类型列表,并确保字符串内容的类型不明确。 然后,对于每种类型,您都可以尝试将字符串转换为它,这样您就可以找到它实际是什么类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.