直接传?如果我在 Func( y );里面对类y的一些成员变量进行修改 会影响到外面的MyClass y 吗?传进去的是指针地址?
还有如果不时类而是int a; Func(&a) 我想在Func里改变a的值
C#中,指针只能是简单类型的,和struct,struct也不能包含对象字段
值类型应该如下: int a; Func( ref a )参看 Item 6: Distinguish Between Value Types and Reference Types 《Effective C#》Item 6:区分值类型和引用类型 http://blog.csdn.net/knight94/archive/2006/07/01/861383.aspx
Knight94(愚翁) 不好意思还有问题继续:)MyClassB{ int *b;//假设写法 Func(ref int a) { b=&a;} Func2() { *b=*b+1; }} //Func是另一个类的函数 现在将a 传进去了,需要将a的地址保存到 *b里在Func2里对b值进行修改也等于修改了a 在C#里该如何实现?
没有好的办法,或者说对于值类型来说,没有什么好的办法,替换的办法 方法一:通过函数返回值来修改; 方法二:把值类型改为引用类型,例如 public class myInt { private int _value; public int Value { get{ return _value; } set{ _value = value; } } } 用myInt类型来替换int类型。
Func( y );
Func( y );里面对类y的一些成员变量进行修改
会影响到外面的MyClass y 吗?传进去的是指针地址?
Func(&a)
我想在Func里改变a的值
int a;
Func( ref a )参看
Item 6: Distinguish Between Value Types and Reference Types
《Effective C#》Item 6:区分值类型和引用类型
http://blog.csdn.net/knight94/archive/2006/07/01/861383.aspx
int *b;//假设写法
Func(ref int a)
{
b=&a;}
Func2()
{
*b=*b+1;
}}
//Func是另一个类的函数
现在将a 传进去了,需要将a的地址保存到 *b里在Func2里对b值进行修改也等于修改了a
在C#里该如何实现?
方法一:通过函数返回值来修改;
方法二:把值类型改为引用类型,例如
public class myInt
{
private int _value;
public int Value
{
get{ return _value; }
set{ _value = value; }
}
}
用myInt类型来替换int类型。