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#返回一个对象只返回一个对象的引用。如果这个引用是类的字段,那这个引用指向的对象就可以在类外部操作了.那不是把数据都暴露了吗?
--------------------编程问答--------------------
1、可以返回一个Immutable(不变)的类,比如如下的Apple类一旦创建了就不能改变了:
class Apple
{
Apple(string desc)
{
Desc = desc;
}
public string Desc {get; private set;}
}
2、可以返回一个拷贝。
3、可以借鉴WPF的Freezable(可冻结)的方式。
补充:.NET技术 , C#