来自main的类实例化或通过方法

时间:2015-11-14 07:25:12

标签: c#

我知道这个问题太愚蠢了。但我是一个学习者和班级生意对我来说很难。

我提出的是Code-1,而不是Code-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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

你的问题有点不清楚,但我会去做。

你当然可以在Program类中使用一个方法,但通常你不会在测试或作业之外的任何程序。

两行完成同样的事情。让我们比较一下他们做了什么:

employeename emp1 = new employeename("Joe");

此行创建一个带有新的employeename对象的新变量emp1。此变量仅在main函数的范围内。下一行调用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;
        }
    }
}