日期:2014-05-19  浏览次数:20730 次

C#一个方法传值的问题
同一个类下有这样两个方法

class   Test
{
                private   void   Test1()
                {

                }

                private   static   void   Test2()
                {
                        string   Str   =   "Test ";
                }
}

请问     怎样在   Test1()里面引用Test2()中字符串Str的值?

------解决方案--------------------
不行,Str的作用域在Test2内
------解决方案--------------------
不行,Str是Test2的局部变量,Test1不可能访问到
------解决方案--------------------
方法1:大家都想得到,把Str定义为作用域为全类的变量。
class Test
{
string Str = " ";
private void Test1()
{

}

private static void Test2()
{
Str = "Test ";
}
}


另:谁说局部变量就访问不到了?有点发散思维好不?
class Test
{
private void Test1(string s)
{
//s = 什么?难道值就不过来?
}

private static void Test2()
{
string Str = "Test ";
Test1(Str);
}
}

------解决方案--------------------
失误!方法1没有表述清楚。
class Test
{
string Str = " ";
private void Test1()
{
string strTemp = Str;
}

private static void Test2()
{
Str = "Test ";
}
}
这种情况下你必须先调用Test2()给Str赋值;然后Test1()中的strTemp 才能取到 "Test "这个值。
不建议你这样问问题,最好把需求说说,根据需求才有比较好的解决方法,不然方法太多难以取舍也是问题。
------解决方案--------------------
static 函数属于类,如果需要操作对象中的成员 则必须把该对象作为参数传递到static函数中去的,不能直接调用。
另:将设计类的static函数 从访问的角度来说他可以访问到类的私有成员,同时这个函数又适合作为线程来操作。熟练的使用static函数还是蛮重要的。
------解决方案--------------------
发散了思维也没用..人家不希望Test1方法有参数呢? 不能使用高于两个函数访问级的变量呢?
还是请lz说清楚具体的需求