我试图将一个类的循环的值用于另一个类 我该怎么做。 请帮帮我..
while (!sStreamReader.EndOfStream)
{
string sLine = sStreamReader.ReadLine();
// make sure we have something to work with
if (String.IsNullOrEmpty(sLine)) continue;
string[] cols = sLine.Split(',');
// make sure we have the minimum number of columns to process
if (cols.Length > 4)
{
double a = Convert.ToDouble(cols[1]);
Console.Write(a);
int b = Convert.ToInt32(cols[3]);
Console.WriteLine(b);
Console.WriteLine();
}
}
我正在尝试将a和b的值用于另一个类。 这个循环是另一个类。
答案 0 :(得分:0)
Int32.TryParse
你可能会更好,所以你不会首先得到例外,但是要把它推到一个新的级别,你会使用throw
({{3 }})。即:在tyour代码中,类似
try {
while (!sStreamReader.EndOfStream)
{
string sLine = sStreamReader.ReadLine();
// make sure we have something to work with
if (String.IsNullOrEmpty(sLine)) continue;
string[] cols = sLine.Split(',');
// make sure we have the minimum number of columns to process
if (cols.Length > 4)
{
double a = Convert.ToDouble(cols[1]);
Console.Write(a);
int b = Convert.ToInt32(cols[3]);
Console.WriteLine(b);
Console.WriteLine();
}
}
} catch {
throw;
}
答案 1 :(得分:0)
这取决于你想要在那个班级做什么。 我认为有很多解决方案。 你想要所有a和b到你的班级吗? 只需将它们保存到2个列表或类似的东西。然后将它们发送到类构造函数或方法中。 示例:
var listOfAs = new List<double>();
var listOfBs = new List<int>();
while (!sStreamReader.EndOfStream)
{
string sLine = sStreamReader.ReadLine();
// make sure we have something to work with
if (String.IsNullOrEmpty(sLine)) continue;
string[] cols = sLine.Split(',');
// make sure we have the minimum number of columns to process
if (cols.Length > 4)
{
double a = Convert.ToDouble(cols[1]);
listOfAs.Add(a);
int b = Convert.ToInt32(cols[3]);
listOfBs.Add(b);
}
}
//Here you can use all As and Bs and send them to the other class
MyClass.DoSomething(listOfAs,listOfBs);
只想要a和b foreach案例? 只需将它们直接发送到类构造函数或方法,并直接在循环内部使用它们,请注意这将发生在a和b之前,匹配cols.length&gt; 4。
循环内的
double a = Convert.ToDouble(cols[1]);
int b = Convert.ToInt32(cols[3]);
MyClass.DoSomething(a,b);
答案 2 :(得分:0)
目前您无法在a
声明中使用b
和/或if
。
这是因为你只是在那里声明它们,所以你只能访问它们直到最后一个大括号(if语句)。
如果您希望访问它们,则必须提前声明它们。即
如果您希望它们仅在while
循环中使用,请执行以下操作:
while (!sStreamReader.EndOfStream)
{
double a = 0.00;
int b = 0;
string sLine = sStreamReader.ReadLine();
// make sure we have something to work with
if (String.IsNullOrEmpty(sLine)) continue;
string[] cols = sLine.Split(',');
// make sure we have the minimum number of columns to process
if (cols.Length > 4)
{
a = Convert.ToDouble(cols[1]);
b = Convert.ToInt32(cols[3]);
}
// You can now use these here too!
Console.Write(a);
Console.WriteLine(b);
Console.WriteLine();
}
如果你想在while
之外的范围之外使用它(你可能想要循环使用这个词),只需将它们提升到while
之外的另一个级别。
请注意,这仅适用于一个值。 a
和b
的值每次都会被覆盖。
如果您想要一个值列表或某些东西创建一个可以传递的数组。 (见Jonas的例子)