在 c# 中拆箱时出错,说明当前上下文中不存在名称?

问题描述

  class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("enter id");
            int id = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("enter name");
            string name = Console.ReadLine();
            Console.WriteLine("price");
            int price = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("enter quantity");
            int quantity = Convert.ToInt32(Console.ReadLine());
            product_demo p1 = new product_demo(id,name,price,quantity);
            p1.diplay();
            Console.Read();
        }
    }
    public class product_demo
    {
        public int id;
        public string name;
        public int price;
        public int quantity;
        public product_demo(int id,string name,int price,int quantity)
        {
            this.id = id;
            this.name = name;
            this.price = price;
            this.quantity = quantity;
            object o1 = id;
            object o2 = name;
            object o3 = price;
            object o4 = quantity;

        }
   
        public void diplay()
        {
            int j = (int)o1; 
            Console.WriteLine("id :");
        }
    }

显示功能中拆箱时出错。装箱是在 product_demo 构造函数中完成的。还有一个问题 ;我们可以在任何构造函数方法之外直接在类的主体中定义装箱吗?

解决方法

您在 object o1 的构造函数中创建了 product_demo,因此它仅存在于该范围内。您需要在类中放置对象(类似于放置其他变量的位置,例如 int idstring name 等。