为什么C#中可以有方法名与类名相同的,且它有什么作用,最好例个详细例子说明下其用途,该如何处理

为什么C#中可以有方法名与类名相同的,且它有什么作用,最好例个详细例子说明下其用途
下面是代码所示,第一个不会报错,第二个则会报错。
1.
  class myClass
  {
  public int Val;
  public myClass(int newInt)
  {
  Val = newInt;
  }
  }


2.
  class abc
  {
  public int Val;
  //方法必须具有返回类型;
  public abc1(int newInt)
  {
  Val = newInt;
  }
  }




我的可用分数已经不多,麻烦各位大侠为小弟解答下,谢谢先。


------解决方案--------------------
那是构造函数,默认构造函数是不带参数的,你可以增加其他带参数的构造函数重载
------解决方案--------------------
构造函数须与类同名,另外关于构造函数,参考http://msdn.microsoft.com/zh-cn/library/ace5hbzh.aspx
------解决方案--------------------
方法必须有返回类型

那不是方法

是构造函数

好好学学C#语法
------解决方案--------------------
构造函数是没有返回类型的
你如果定义一个函数肯定要有返回类型啊,没有就是void。
建议楼主看看什么是构造函数吧,其实上次我也遇到一个问题,构造函数的重载,还有什么是单例模式等等。
------解决方案--------------------
构造函数,可以对成员在实例化的时候有默认值
1.
class myClass
{
public int Val;
public myClass(int newInt)
{
Val = newInt;
}
}
见解:你实例化myclass的时候传入一个参数,这个参数作为Val的值
2.
class abc
{
public int Val;
//方法必须具有返回类型;
public abc1(int newInt)
{
Val = newInt;
}
}
这里的abc1不是构造函数,故可以有返回类型
------解决方案--------------------
第一个是构造函数 因为特殊 所以语法上没有了void
第二个是成员函数

构造函数的作用就是分配内存,然后初始化值

class myClass
{
public int Val;
public myClass(int newInt)
{
Val = newInt;
}
public void PrintVal()
{console.writeline(Val);}
}

myClass a=new MyClass(7);
a.PrintVal();

myClass a=null;
a.PrintVal();//这个会报未将对象引用设置到对象的实例的错误

因为还没有分配到内存 何来执行