debugging 观察窗口CS 0103-跟进以排除我的代码问题

zdwk9cvp  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(121)

更新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);

            }

        }

    }

}
tct7dpnv

tct7dpnv1#

您可以像这样更改代码,在Form1的函数InitializeComponent()之前定义解析器和标记:

public partial class Form1 : Form
{
    string filecontent = "<html><head></head><body></body></html>";
    StringParser parser = new StringParser();
    string token = "";
    public Form1()
    {

        InitializeComponent();
        parser.Content = filecontent;
        while (!parser.Next('<'))
        {
            parser.Next('>');
            token = parser.Token;
        }

    }
}

下面是我的测试结果:

相关问题