You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中writeProducts方法无法识别prod1,报CS0103错误求助

解决CS0103错误:prod1在当前上下文中不存在

你的问题核心是变量作用域和方法参数传递问题,另外Console.WriteLine的占位符也存在错误,下面是具体修正方案:

问题原因

  • prod1是Main方法内部的局部变量,作用域仅限Main方法内部,writeProducts方法无法直接访问它,这就是触发CS0103错误的根本原因。
  • Console.WriteLine里的占位符全部用了{0},会导致所有位置重复输出第一个参数的值,无法正确展示产品的各个属性。

修正步骤

  1. 修改writeProducts方法,添加参数:让方法接收一个Product类型的参数,这样就能在方法内部访问产品的属性。
  2. 调用方法时传入prod1:在Main里调用writeProducts时,把定义好的prod1传进去。
  3. 修正占位符索引:把{0}改成对应位置的{0}、{1}、{2}、{3},匹配后面的参数顺序。

修正后的完整代码

namespace project
{
    class Program
    {
        public struct Product
        {
            public string Name;
            public string Type;
            public double Pr1pc;
            public double Pr1kg;
            public int number;
        }
       
        static void Main(string[] args)
        {
            Console.Clear();
            Product prod1;

            //Prod1
            prod1.Name = "Chlyb";
            prod1.Type = "szt";
            prod1.Pr1pc = 6.30;
            prod1.number = 1;

            // 传入prod1作为参数
            writeProducts(prod1);

            Console.ReadKey();
            Main(args);
        }
        // 添加Product类型的参数
        static void writeProducts(Product product)
        {
            // 修正占位符索引,对应各个属性
            Console.WriteLine("{0}. {1}, {2} {3}", product.number, product.Name, product.Pr1pc, product.Type);
        }
    }
}

额外提示

  • 循环调用Main(args)会导致栈溢出,建议用while循环替代这种递归调用,示例:
    while(true)
    {
        Console.Clear();
        // 产品定义和输出逻辑
        Console.ReadKey();
    }
    

内容的提问来源于stack exchange,提问作者Dave441

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:21:28