当前位置:编程学习 > C#/ASP.NET >>

c#如何理解方法调用

因为类变量仅仅是对象的引用。相当于对象的操作受限的指针。
那Person someOne = new Person();
  someOne.Eat(Apple apple)那么这句话本身意思是通过someOne来实现someOne引用的对象吃苹果。
 
这里输入参数是apple引用。
我想问问这句话会对apple引用的对象的状态改变.
 someOne.Eat(Apple apple)
{
  apple.Smallvolume(); 
}
或者让apple引用新的对象
someOne.Eat(Apple apple)
{
  apple = new Apple("smallOne");
}  
单从方法调用不看具体实现能知道是哪一种情况吗? C# 对象 引用 --------------------编程问答-------------------- apple.Smallvolume(); 会改变apple中属性值。
apple = new Apple("smallOne");不会改变apple中属性值。

应用对象作为参数,对象引用的地址是不会改变的,但是指向的内容可以改变。
如果希望改变引用对象的地址,可以把参数设置out或者ref。
someOne.Eat(ref Apple apple)
{
  apple = new Apple("smallOne");
}   --------------------编程问答-------------------- 再请教一下如何保证数据封了?
c++返回一个对象会返回一个对象的拷贝。
c#返回一个对象只返回一个对象的引用。如果这个引用是类的字段,那这个引用指向的对象就可以在类外部操作了.那不是把数据都暴露了吗?

--------------------编程问答--------------------
引用 2 楼 fatjay2046 的回复:
再请教一下如何保证数据封了?

1、可以返回一个Immutable(不变)的类,比如如下的Apple类一旦创建了就不能改变了:

class Apple
{
  Apple(string desc)
  {
    Desc = desc;
  }
  public string Desc {get; private set;}
}

2、可以返回一个拷贝。
3、可以借鉴WPF的Freezable(可冻结)的方式。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,