我的应用程序使用VSTO读取Excel文件并将读取的数据添加到StringDictionary.它仅添加具有几位数字的数据(1000 1000,2 1000,34 - 逗号是俄罗斯标准中的分隔符).
最好检查当前字符串是否是合适的数字?
object data, string key; // data had read
try
{
Convert.ToDouble(regionData, CultureInfo.CurrentCulture);
dic.Add(key, regionData.ToString());
}
catch (InvalidCastException)
{
// is not a number
}
Run Code Online (Sandbox Code Playgroud)
要么
double d;
string str = data.ToString();
if (Double.TryParse(str, out d)) // if done, then is a number
{
dic.Add(key, str);
}
Run Code Online (Sandbox Code Playgroud)
我必须使用StringDictionary而不是Dictionary<string, double>因为以下解析算法问题.
我的问题:哪种方式更快?哪个更安全?
打电话Convert.ToDouble(object)或者打电话会更好Convert.ToDouble(string)吗?
我正在尝试List<byte>从包含字符串(十六进制)的文件中创建一个.定义是:
List<byte> myArray = new List<byte>();
Run Code Online (Sandbox Code Playgroud)
如果我想直接添加我的信息,我会使用以下内容:
myArray.Add(0xb8);
Run Code Online (Sandbox Code Playgroud)
注意:没有任何报价或双引号.
问题是我想从文件中做同样的事情!现在我想知道什么0xb8是类型,所以我使用以下代码:
0xc3.GetType().ToString()
Run Code Online (Sandbox Code Playgroud)
结果是:System.Int32 !!!!
但是当我从文件中读取字符串并使用这样的代码时,它会给我以下错误.
代码:
Line = "0xb8";
myArray.Add(Convert.ToInt32(Line));
Run Code Online (Sandbox Code Playgroud)
错误:
Argument 1: cannot convert from 'int' to 'byte'
Run Code Online (Sandbox Code Playgroud)
而且很清楚.因为唯一的重载myArray只能byte作为一个参数.是什么让这么复杂,我是为什么,当我加不给我任何错误Int32,以myArray在myArray.Add(0xb8);.
我认为它应该是一种字节形式!也许 !
为什么不给出任何错误以及如何实现这种情况(我的意思是从字符串添加字节到myArray)?