更新VS 2022查看手表后的问题。在回答后,建议张贴代码,我这样做是为了排除问题是由我的代码造成的,然后才报告错误。
原冈问:Watch window at debugging: CS0103: The name '' does not exists in the current context。版本和解决方案细节在此处说明。
代码仅仅是 * 在屏幕上获得一些东西 *。
后来我尝试过:
- 正在创建一个新的解决方案,添加一个windows窗体应用程序和windows控件库。已创建一个具有值的类。
这里没问题,
- 做同样的事情,但也是一个新的解决方案,将
StringParser
的代码粘贴到库中,并粘贴Form1
的构造函数的相关代码, - 同样是一个新的解决方案,其中
StringParser
只是一个WindowsForms应用程序的一部分,
两者的问题相同。
该图像包含监 windows 口的屏幕截图。也来自代码文件以显示调试状态。(* 代码为以下格式化文本 *)。
所有项目都是“现成的”
程式库-StrangParser.cs
namespace html
{
public enum Pin
{
Start,
End,
Both,
}
public class StringParser
{
private string content = "";
public string Content { get { return content; } set { if (content != value) content = value; if (content.Length > 0) { position = start = 0; end = 0; } } }
private int position = -1;
private int start = -1;
private int end = -1;
public bool Next()
{
++position;
if (position > content.Length)
position = content.Length;
if (position > end)
end = position;
return (position >= content.Length);
}
public bool Next(char to_char, bool include = true)
{
while (position < content.Length && content[position] != to_char)
{
++position;
if (position > end)
end = position;
}
if (include) ++position;
if (position > content.Length)
position = content.Length;
if (position > end)
end = position;
return (position >= content.Length);
}
public bool Previous()
{
--position;
if (position < 0)
position = 0;
if (position < start)
start = position;
return (position ==0);
}
public string Token
{
get
{
return start >= 0 && end <= content.Length && end > start
? content.Substring(start, end - start)
: "";
}
}
public void Pin(Pin pin)
{
if (pin == html.Pin.Start || pin == html.Pin.Both)
start = position;
if (pin == html.Pin.End || pin == html.Pin.Both)
end = position;
}
public override string ToString()
{
if (content == null || content == "")
return "";
string s = content.Substring(0, start);
string t = Token;
string e = content.Substring(end, content.Length - end);
if (s.Length > 15) s = "..." + s.Substring(s.Length - 15);
if (e.Length > 15) e = e.Substring(0, 15) + "...";
return string.Format("[{0}-{1}-{2}] {3} |--> '{4}' <--| {5}", start, position, end, s, t, e);
}
}
}
窗体应用程序- Form1.cs -代码
using System.Windows.Forms;
using html;
namespace contentdownloader
{
public partial class Form1 : Form
{
string filecontent = "<html><head></head><body></body></html>";
StringParser watch_parser = null;
string watch_token = null;
public Form1()
{
InitializeComponent();
StringParser parser = new StringParser();
watch_parser = parser;
parser.Content = filecontent;
string token = "";
while (!parser.Next('<'))
{
//parser.Pin(html.Pin.Both);
parser.Next('>');
token = watch_token = parser.Token;
parser.Pin(html.Pin.Both);
}
}
}
}
1条答案
按热度按时间tct7dpnv1#
您可以像这样更改代码,在Form1的函数InitializeComponent()之前定义解析器和标记:
下面是我的测试结果: