从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;
}
}
}
你的问题有点不清楚,但我会回答的。
当然,你可以在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;
}
}
}