装箱没有用??? public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string str="ooooooooooo"; A a = new A(ref str); //按引用传递str a.change(); //修改STR的值 MessageBox.Show(str); //输出依然是ooooooooooo } } public class A { object obj; public A(ref string sss) { obj = sss; //装箱 } public void change() { obj = "aaaaaaaaaaa"; } }
private void button1_Click(object sender, EventArgs e) { unsafe { string str = "abcde"; fixed (char* pStr = str) { A a = new A(pStr); a.change(); MessageBox.Show(str.ToString()); } } } } public class A { unsafe char* pStr = (char*)0; public unsafe A(char* sss) { pStr =sss; } public unsafe void change() { *pStr = "fghijkl";//郁闷了,高手来帮帮我。谢谢。 } }
int * sp = &s;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
string str="ooooooooooo";
A a = new A(ref str); //按引用传递str
a.change(); //修改STR的值
MessageBox.Show(str); //输出依然是ooooooooooo
}
} public class A
{
object obj;
public A(ref string sss)
{
obj = sss; //装箱
} public void change()
{
obj = "aaaaaaaaaaa";
}
}
{
unsafe
{
string str = "abcde";
fixed (char* pStr = str)
{
A a = new A(pStr);
a.change();
MessageBox.Show(str.ToString());
}
}
}
} public class A
{
unsafe char* pStr = (char*)0;
public unsafe A(char* sss)
{
pStr =sss;
} public unsafe void change()
{
*pStr = "fghijkl";//郁闷了,高手来帮帮我。谢谢。 }
}
复杂的数据类型,还有自己写的类都是引用类型 分配在托管堆上
如果你真要那么做,就把long ok=3333; 写到你自己的类属性里
下面对于你自己的类的引用都是引用类型
{
unsafe
{
int num = 100;
int* p = # Console.WriteLine(*p);
}
}再设置项目属性-〉生成 允许不安全代码
/////////我就是需要一个引用变量啊,帮帮我啊。
~~ 路过的 最讨厌指针拉
{
unsafe
{
string str = "abcde";
fixed (char* pStr = str)
{
A a = new A(pStr);
a.change();
MessageBox.Show(str.ToString());
}
}
}
} public class A
{
unsafe char* pStr = (char*)0;
public unsafe A(char* sss)
{
pStr =sss;
} public unsafe void change()
{
*pStr = (char *)"fghijkl";//郁闷了,高手来帮帮我。谢谢。 }
}
long b = 15;
objec a = b;
类和指针
不会 指针 不愿你
那类呢
LZ 你乍了
不会封装吗
ref int a=0;
out float b;你就可以把a,b当引用用了撒..(做为方法参数)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
string str="ooooooooooo";
A a = new A(ref str); //按引用传递str
a.change(); //修改STR的值
MessageBox.Show(str); //输出依然是ooooooooooo
}
} public class A
{
object obj;
public A(ref string sss)
{
obj = sss; //装箱
} public void change()
{
obj = "aaaaaaaaaaa";
}
}
这个程序的问题是C#给String类重载了等号,obj = sss这一句是拷贝构造而不是装箱。即使等号没有重载,这句也应该是赋引用而不是装箱,因为String已经是引用类型了。
{
unsafe
{
string str = "abcde";
fixed (char* pStr = str)
{
A a = new A(pStr);
a.change();
MessageBox.Show(str.ToString());
}
}
}
} public class A
{
unsafe char* pStr = (char*)0;
public unsafe A(char* sss)
{
pStr =sss;
} public unsafe void change()
{
*pStr = (char *)"fghijkl";//郁闷了,高手来帮帮我。谢谢。 }
}这个程序的问题是.Net里,String不是char[],所以"fghijkl"不能转换成char*,这里应该换成一个字符常量而不是字符串常量。把这一句改成
*pStr = '1';
执行后,abcde应该会变成1bcde。
unsafe
{
long* rok = &ok;
*rok = 5;
}
MessageBox.Show(ok.ToString());