下面这个类该如何调用?为什么提示非静态方法或属性要求被引用?
我想在主程序里面引用 links这里该怎么写是WebPage.links对吗?可是为什么提示非静态方法或属性要求被引用,是下面的类写的不用吗?
using System;
using System.Data;
using System.Configuration;
using System.Net;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading;
using System.Web;
namespace Web
{
public class WebPage
{
public IList<string> m_links;
public IList<string> Links
{
get
{
if (m_links.Count == 0) getLinks();
return m_links;
}
}
public IList<string> getLinks()
{
m_links = new List<string>();
string result = @"<dd><a href=""http://www.baidu.com"" title=百度 target=_blank>百度</a></dd><dd><a href=""http://www.sohu.com"" title=搜狐 target=_blank>搜狐</a></dd>";
if (m_links.Count == 0)
{
Regex[] regex = new Regex[2];
regex[0] = new Regex(@"<a\shref\s*=""(?<URL>[^""]*).*?>(?<title>[^<]*)</a>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
regex[1] = new Regex("<[i]*frame[^><]+src=(\"|')?(?<url>([^>\"'\\s)])+)(\"|')?[^>]*>", RegexOptions.IgnoreCase);
for (int i = 0; i < 2; i++)
{
Match match = regex[i].Match(result);
while (match.Success)
{
try
{
string url = HttpUtility.UrlDecode(new Uri(match.Groups["URL"].Value).AbsoluteUri);
m_links.Add(url);
}
catch (Exception ex) { Console.WriteLine(ex.Message); };
match = match.NextMatch();
}
}
}
return m_links;
}
}
}
------解决方案--------------------
因为不是声明为静态的在调用时都必须能过类的对象来调用。
如果是当前类内部的方法,你可以用过this来调用。
this是类的隐藏实例。
------解决方案--------------------
只有static的定义才能直接调用。
WebPage mypage = new WebPage();
调用mypage.links