如何从 class 调用函数
How can I call a function from a class
我真的很困惑。
我的Program.cs如下:
using System;
using System.IO;
using System.Net.NetworkInformation;
using System.Collections.Generic;
namespace PingApp
{
class Program
{
static void Main(string[] args)
{
string filename = @"PingLog.csv";
{
using (var writer = new StreamWriter(filename, true))
{
}
}
}
}
}
然后我有一个名为 WebSitePing.cs 的 class,这是我所有代码的地方。这是我的 WebSitePing.cs class:
using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
namespace PingApp
{
public class WebSitePing
{
public void Ping()
{
var lstWebSites = new List<string>
{
"www.mearstransportation.com",
"www.amazon.com",
"www.ebay.com",
"www.att.com",
"www.verizon.com",
"www.sprint.com",
"www.centurylink.com",
"www.yahoo.com"
};
foreach (string website in lstWebSites)
{
var roundTripTime = new List<string>();
for (var i = 0; i < 4; i++)
{
try
{
var myPing = new Ping();
var reply = myPing.Send(website, 1000);
if (reply != null)
{
Console.WriteLine("{0}, {1}", website, string.Join(" , ", roundTripTime));
}
}
catch
{
Console.WriteLine("ERROR: You have some TIMEOUT issue");
}
}
}
}
}
}
我必须将 WebSitePing.cs class 调用到 Program.cs 中,以便我可以创建 PingLog.csv 文件和 运行 [=] 中的代码20=] 并且我的所有 ping 结果都将保存到我从 Program.cs 创建的文件中。
有人可以帮我弄清楚我该怎么做吗?
试试这个:
string filename = @"PingLog.csv";
{
using (var writer = new StreamWriter(filename, true))
{
Console.SetOut(writer);
var ping = new WebSitePing();
ping.Ping();
}
}
您不仅必须在调用 .Ping()
之前创建 WebSitePing
的实例,而且还必须将 Console
的输出设置为您的 [=15] =].
你最好制作 Ping()
return IEnumerable<string>
然后写出这些行。这将是一个更干净的程序。
您的 WebSitePing
代码有点损坏。这是最简单的修复方法。
public class WebSitePing
{
public void Ping()
{
var lstWebSites = new List<string>
{
"www.mearstransportation.com",
"www.amazon.com",
"www.ebay.com",
"www.att.com",
"www.verizon.com",
"www.sprint.com",
"www.centurylink.com",
"www.yahoo.com"
};
foreach (string website in lstWebSites)
{
var roundTripTime = new List<long>();
for (var i = 0; i < 4; i++)
{
using (var myPing = new Ping())
{
var reply = myPing.Send(website, 1000);
if (reply != null)
{
roundTripTime.Add(reply.RoundtripTime);
}
}
}
Console.WriteLine("{0}, {1}", website, String.Join(", ", roundTripTime));
}
}
}
你的问题在上面的评论中基本得到了解答,这里是:
namespace PingApp
{
class Program
{
static void Main(string[] args)
{
var pinger = new WebSitePing();
pinger.Ping();
}
}
}
除此之外,您需要将 using
块移动到 Ping()
方法中,而不是在 Program.cs
本身中。这样就不用 Console.WriteLine()
,而是将输出附加到 StreamWriter
。
或者,您可以像@Enigmativity 的回答一样设置 Console
的输出,这会将您的 Console.WriteLine()
调用重定向到 StreamWriter
而不是调试器控制台。
我真的很困惑。 我的Program.cs如下:
using System;
using System.IO;
using System.Net.NetworkInformation;
using System.Collections.Generic;
namespace PingApp
{
class Program
{
static void Main(string[] args)
{
string filename = @"PingLog.csv";
{
using (var writer = new StreamWriter(filename, true))
{
}
}
}
}
}
然后我有一个名为 WebSitePing.cs 的 class,这是我所有代码的地方。这是我的 WebSitePing.cs class:
using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
namespace PingApp
{
public class WebSitePing
{
public void Ping()
{
var lstWebSites = new List<string>
{
"www.mearstransportation.com",
"www.amazon.com",
"www.ebay.com",
"www.att.com",
"www.verizon.com",
"www.sprint.com",
"www.centurylink.com",
"www.yahoo.com"
};
foreach (string website in lstWebSites)
{
var roundTripTime = new List<string>();
for (var i = 0; i < 4; i++)
{
try
{
var myPing = new Ping();
var reply = myPing.Send(website, 1000);
if (reply != null)
{
Console.WriteLine("{0}, {1}", website, string.Join(" , ", roundTripTime));
}
}
catch
{
Console.WriteLine("ERROR: You have some TIMEOUT issue");
}
}
}
}
}
}
我必须将 WebSitePing.cs class 调用到 Program.cs 中,以便我可以创建 PingLog.csv 文件和 运行 [=] 中的代码20=] 并且我的所有 ping 结果都将保存到我从 Program.cs 创建的文件中。 有人可以帮我弄清楚我该怎么做吗?
试试这个:
string filename = @"PingLog.csv";
{
using (var writer = new StreamWriter(filename, true))
{
Console.SetOut(writer);
var ping = new WebSitePing();
ping.Ping();
}
}
您不仅必须在调用 .Ping()
之前创建 WebSitePing
的实例,而且还必须将 Console
的输出设置为您的 [=15] =].
你最好制作 Ping()
return IEnumerable<string>
然后写出这些行。这将是一个更干净的程序。
您的 WebSitePing
代码有点损坏。这是最简单的修复方法。
public class WebSitePing
{
public void Ping()
{
var lstWebSites = new List<string>
{
"www.mearstransportation.com",
"www.amazon.com",
"www.ebay.com",
"www.att.com",
"www.verizon.com",
"www.sprint.com",
"www.centurylink.com",
"www.yahoo.com"
};
foreach (string website in lstWebSites)
{
var roundTripTime = new List<long>();
for (var i = 0; i < 4; i++)
{
using (var myPing = new Ping())
{
var reply = myPing.Send(website, 1000);
if (reply != null)
{
roundTripTime.Add(reply.RoundtripTime);
}
}
}
Console.WriteLine("{0}, {1}", website, String.Join(", ", roundTripTime));
}
}
}
你的问题在上面的评论中基本得到了解答,这里是:
namespace PingApp
{
class Program
{
static void Main(string[] args)
{
var pinger = new WebSitePing();
pinger.Ping();
}
}
}
除此之外,您需要将 using
块移动到 Ping()
方法中,而不是在 Program.cs
本身中。这样就不用 Console.WriteLine()
,而是将输出附加到 StreamWriter
。
或者,您可以像@Enigmativity 的回答一样设置 Console
的输出,这会将您的 Console.WriteLine()
调用重定向到 StreamWriter
而不是调试器控制台。