日期:2014-05-18  浏览次数:20767 次

vb转c#碰到的小问题
String s1="";
s1+="abc"; //这里报错


bool b1=false;
FileStream a1;
while(true)
{
if (b1)
{
  a1.close(); //这一句怎么保证不会出错 我想加个if,但if(a1==null)会出错
  a1=new FileStream("c:\\1.txt",FileMod.Creat,FileAccess.Write);
}
}

------解决方案--------------------
s1+="abc"; 没错的s1='abc'
a1没有实例化,

a1.close(); C要大写,C#很认大小写的,和VB不一样!
------解决方案--------------------
String s1=""; 
s1+="abc"; 这样写是没有问题的。

if (a1==null) a1.close();
------解决方案--------------------
String s1="";

已经实例化了。

public string[] strPath()
{
StreamReader sr;
try
{
path = new string[5];
int i = 0;
string sLine = "";
sr = File.OpenText(Path.GetFileName("Path.ini"));
while (sLine != null)
{
sLine = sr.ReadLine();
if (sLine == null)
break;
path[i] = sLine;
i++;
}
}
catch (Exception e)
{
MessageBox.Show(e.Message, "提示", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return path;
}
sr.Close();
return path;
}
------解决方案--------------------
单纯看 String 那两句是没错,不知是不是被之前的错误影响到的。
在 C 系列语言中,定义时就初始化是个好习惯。比如说:
C# code
FileStream fs = null;
...
if (fs == null)
{
    fs = new FileStream(...);
}
else
{
    fs.Close();
}

------解决方案--------------------
String s1=""; 
s1+="abc"; //这里报错 

没错啊?怎么会错呢?

bool b1=false; 
FileStream a1; 
while(true) 

if (b1) 

a1.close(); //这一句怎么保证不会出错 我想加个if,但if(a1==null)会出错 
a1=new FileStream("c:\\1.txt",FileMod.Creat,FileAccess.Write); 

}
a1没有实例化,当然出错了
------解决方案--------------------
FileStream a1 =null;
if(a1 == null) 就不会报错了
对象没有实例化,这样指针没有指向具体的位置,当然不能判断!