C#提示:无法将"System.String[]"隐式转换为string类型
我用File.ReadAllLines(@"text.txt");读取字符,但是取出的都是System.String[],提示:无法将"System.String[]"隐...
我用File.ReadAllLines(@"text.txt");读取字符,但是取出的都是System.String[],提示:无法将"System.String[]"隐式转换为string类型。我试着用File.ReadAllText(@"text.txt");结果读取的就是我所需要的text文本文件里的内容。我想知道为什么ReadAllLines方法会出现这种隐式转换问题而ReadAllText没有,这该怎么解决?我希望用ReadAllLines方法取出我text文本中所要行的数据!
展开
7个回答
展开全部
这是说你直接把System.String[]当成string类型使用,System.String[]是数组类型,想要使用数组中的值,可以按如下代码做:
string[] lines = File.ReadAllLines(@"text.txt");
string txt = "";
foreach (string line in lines)
{
txt += line;
}
txt就是组数中所有字符串的组合。
展开全部
无法隐式转换,那是强制转换。VS新版本的出来,过去一些隐式能转换的会变成只能强制转换的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ReadAllLines方法返回字符串数组(String[]),当然不能隐式转换为字符串(string)。
ReadAllText方法返回字符串(string),所以能够赋给字符串遍量。
希望用ReadAllLines方法取出你text文本中所要行的数据,只需要
string[] lines=File.ReadAllLines(@"text.txt");
然后可遍历输出。希望采纳。
ReadAllText方法返回字符串(string),所以能够赋给字符串遍量。
希望用ReadAllLines方法取出你text文本中所要行的数据,只需要
string[] lines=File.ReadAllLines(@"text.txt");
然后可遍历输出。希望采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有必要一行一行处理的情况下,你直接用ReadAllText,因为它内部就是一行一行的拼起来的。
你如果需要处理一行一行的,说明你对c#的返回类型还不是很了解。
既然是一行一行的,说明是多行,每一行都是string,所以是一个数组,即string[]
所以你定义变量的时候,应该就是数组
string[] lines= File.ReadAllLine(....);//
foreach(string line in lines){
//line 就是一行
}
for(int i=0;i<lines.Length;i++){
//lines[i] 就是其中一行
}
具体看你要做什么
你如果需要处理一行一行的,说明你对c#的返回类型还不是很了解。
既然是一行一行的,说明是多行,每一行都是string,所以是一个数组,即string[]
所以你定义变量的时候,应该就是数组
string[] lines= File.ReadAllLine(....);//
foreach(string line in lines){
//line 就是一行
}
for(int i=0;i<lines.Length;i++){
//lines[i] 就是其中一行
}
具体看你要做什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string[] sa = File.ReadAllLines(@"text.txt");
string all = “”;
foreach(string str in sa)
{
all += str+"\r\n";
}
string all = “”;
foreach(string str in sa)
{
all += str+"\r\n";
}
追问
为什么会出现这个问题呢?再就是你用这个方法在我的代码上行不通,代码量太大了,变的会很复杂!开始我还用过那种读取写入的流,后来用Using类,再现在用的这种方法,这种方法就一条语句就能搞定,而且省了我其余的很多代码!
追答
public static string StringsToString(string[] sa)
{
StringBuilder sb = new StringBuilder();
foreach(string str in sa)
{
sb.Append(str).Append("\r\n");
}
return sb.ToString();
}
这个方法放在一个通用类里,比如类名为CommonHelper
调用时: string all = CommonHelper.StringsToString(File.ReadAllLines(@"text.txt"));
至于为什么会出现这个问题,是因为一个是string数组,一个是string,两个对象不同
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询