请教一下(Person p)

footdream111 2011-02-06 08:46:52
class program
{
public static void Main()
{
int i = 10;
int j = i;
i++;
Console.WriteLine(j); //输出10
Person p1 = new Person(10);
Person p2 = p1;
p1.num++;
Console.WriteLine(p2.num); //输出11
Incnum(p2) ;
Console.WriteLine(p2.num); //输出12
Console.ReadKey();
}
static void Incnum(Person p)
{
p.num++;
}
}
class Person
{
public int num { get;set ;}
public Person(int num)
{
this.num = num;
}
}

请教一下,上面的代码中,static void Incnum(Person p)是啥写法哦,!没看到过呢,只看到过括号内写int、string,
1:person是一个数据类型?不是吧?
2:p应该是一个变量吧,那p.num++;呢,变量后面用点运算?不会吧?
3:p是person的对象,那new呢,咋不写person p = new person;呢,
4:请问,这个知识是那个章节的内容,怎么理解,谢谢
...全文
172 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2011-02-06
  • 打赏
  • 举报
回复
NullReference Exception
空引用异常

就是使用了一个值为 null 的对象引用。
footdream111 2011-02-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangxinggood 的回复:]
……
[/Quote]
请问NullReference Exception是啥?
机器人 2011-02-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 footdream111 的回复:]
请教一下,上面的代码中,static void Incnum(Person p)是啥写法哦,!没看到过呢,只看到过括号内写int、string,
1:person是一个数据类型?不是吧?
2:p应该是一个变量吧,那p.num++;呢,变量后面用点运算?不会吧?
3:p是person的对象,那new呢,咋不写person p = new person;呢,
4:请问,这个知识是那个章节的内容,怎么理解,谢谢[/Quote]

static void Incnum(Person p)
这表示参数是一个引用类型。Person是一个类,p是Person类的实例。
p.num 表示对这个实例的num成员进行++操作。Incnum里的p是参数,在外部实例化了。
你可以这么尝试:
Person p1;
Incnum(p1); //如果外部没有实例化,那么方法Incnum在执行p.num++的时候会抛出NullReference Exception
这里都是面向对象编程的基本概念。lz请从头学习。
threenewbee 2011-02-06
  • 打赏
  • 举报
回复
看以下两条语句:
p;
new Person();
它们都表示一个 p 对象的引用(假设 p != null)
那么
Person p1 = p; 就是让 p1 取得对 p 的引用。
Person p1 = new Person(); 就是让 p1 取得对刚才创建还没有命名的一个新对象的引用。

看一个你熟悉的例子:
x;
3;
假设 x 的值为3。
int y = x; 就是让 y 的值等于 x 的值。
int y = 3; 就是让 y 的值等于常数3。
dalmeeme 2011-02-06
  • 打赏
  • 举报
回复
楼主应该看看《C#入门经典(第三版)》,网上有电子书下载的,把基础打好。
wuyq11 2011-02-06
  • 打赏
  • 举报
回复
类是引用类型:引用类型在堆上分配地址
引用类型只复制指针.而等号是在对象层面建立的一个对象的引用
浅拷贝(shallow copy)对于引用类型对象中的值类型字段进行了逐位复制。赋值运算符只是把源对象的引用赋值给目的对象,两者引用同一个对象。
浅拷贝后的对象的值类型字段更改不会反映到源对象,而赋值运算后的对象的值类型字段更改会反映到源对象
threenewbee 2011-02-06
  • 打赏
  • 举报
回复
Person是一个类,p是这个类的一个实例,对象。
p.num 是 p 对象的一个成员
new 用来创建一个对象。

这些都是最基本的概念,要好好理解。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧