关于ref和out
ref和out是不是VB里的BYVAL啊能不能给点例子看看啊
=========================
下面时我写的
怎么老是报错啊?
static void filldata(ref string stra)
{
stra = "你好!";
}
private void buttonX7_Click(object sender, EventArgs e)
{
string strc;
string strb;
strb = filldata(ref strc);
MessageBox.Show(strb);
}
错误信息 : 无法将类型“void”隐式转换为“string” --------------------编程问答-------------------- static string filldata(ref string stra)
stra = "你好!";
return sstra; --------------------编程问答-------------------- strb = filldata(ref strc);
void filldata没有返回值的
string strc;
//string strb;
//strb = filldata(ref strc);
//MessageBox.Show(strb);
MessageBox.Show(strc);
就是你要的结果
--------------------编程问答--------------------
--------------------编程问答--------------------
private void buttonX7_Click(object sender, EventArgs e)
{
string strc;
string strb;
filldata(ref strc); //此处更改
MessageBox.Show(strb);
}
楼上很对 方法有类型是需要返回的
out 和ref的例子 你看看
using System;
class TestApp
{
static void outTest(out int x, out int y)
{//离开这个函数前,必须对x和y赋值,否则会报错。
//y = x;
//上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行
x = 1;
y = 2;
}
static void refTest(ref int x, ref int y)
{
x = 1;
y = x;
}
public static void Main()
{
//out test
int a,b;
//out使用前,变量可以不赋值
outTest(out a, out b);
Console.WriteLine("a={0};b={1}",a,b);
int c=11,d=22;
outTest(out c, out d);
Console.WriteLine("c={0};d={1}",c,d);
//ref test
int m,n;
//refTest(ref m, ref n);
//上面这行会出错,ref使用前,变量必须赋值
int o=11,p=22;
refTest(ref o, ref p);
Console.WriteLine("o={0};p={1}",o,p);
}
}
--------------------编程问答--------------------
1、首先你的strc、strb要先赋值,比如strc="";strb="";c#的先赋值原则。
2、filldata函数返回的是void,把void赋给string 类型的strb当然会报错。
帮你改下:
static string filldata(ref string stra)--------------------编程问答-------------------- ... --------------------编程问答-------------------- 把VOID改成string 类型的,就OK了
{
return stra = "你好!";
}
private void buttonX7_Click(object sender, EventArgs e)
{
string strc="";
string strb="";
strb = filldata(ref strc);
MessageBox.Show(strb);
}
这样的问题无非就是类型出错,平时自己可以试着改下类型。
调试也是一种好办法 --------------------编程问答-------------------- 楼上已有答案,
学习了。
补充:.NET技术 , C#