从main或通过方法实例化类

本文关键字:方法 实例化 main | 更新日期: 2023-09-27 18:21:57

我知道这个问题太傻了。但我是一个学习者,课堂事务对我来说很困难

我展示的是代码-1和代码-2以下的代码。我想知道两者是否有相同的目的,而区别仅存在于演示中。

我提出这个疑问是因为到目前为止,我习惯于在主程序中做所有事情,而不是在类程序中使用不同的方法。

代码-1.

namespace trial1
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            p.InstanceEqual();
        }
        public void InstanceEqual()
        {
            string name = "Unnikrishnan";
            employeename emp1 = new employeename(name);
        }
    }
    public class employeename
    {
        string _name;
        public employeename(string name)
        {
            _name = name;
        }
    }
}

代码-2.

namespace trial1
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            employeename emp1 = new employeename("Unnikrishnan");
        }
    }
    public class employeename
    {
        string _name;
        public employeename(string name)
        {
            _name = name;
        }
    }
}

从main或通过方法实例化类

你的问题有点不清楚,但我会回答的。

当然,你可以在Program类中有一个方法,尽管除了测试或家庭作业之外,你通常不会在任何程序中使用。

这两行并没有完成相同的事情。让我们比较一下他们的做法:

employeename emp1 = new employeename("Joe");

这一行创建了一个带有新employeename对象的新变量emp1。此变量仅在主函数中的作用域中。下一行调用InstanceEqual方法:

public void InstanceEqual()
{
    string name = "Unnikrishnan";
    employeename emp1 = new employeename(name);
}

该方法创建一个名为emp1的新变量,该变量仅在InstanceEqual方法中的作用域中。一旦InstanceEqual方法完成,它将控制权返回给main(),并且您不再可以访问在InstanceEqual方法中创建的emp1。

如果你想完成同样的事情,你必须返回你创建的值。一个不同的版本来完成相同的事情看起来是这样的:

namespace trial1
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            employeename emp1 = new employeename("Joe");
            employeename emp2 = p.InstanceEqual();
        }
        public employeename InstanceEqual()
        {
            string name = "Unnikrishnan";
            employeename emp2 = new employeename(name);
            return emp2;
        }
    }
    public class employeename
    {
        string _name;
        public employeename(string name)
        {
            _name = name;
        }
    }
}