标题:C#中使用out时碰到的问题
只看楼主
OneHunter
Rank: 2
等 级:论坛游民
帖 子:25
专家分:26
注 册:2010-10-28
 问题点数:0 回复次数:5 
C#中使用out时碰到的问题
using System;
public class _01
{
    public static void idea(int n,out int aleap)
    {
        int i;  //int aleap=0;
        for (i = 2; i <= n / 2; i++)
            if (n % i == 0)
            {
                aleap = 1;
                break;
            }
            else
                aleap = 0;
    }
    public static void Main()
    {
        int i,leap;
        for (i = 100; i <= 200; i++)
        {
            idea(i,out leap);
            if(leap==0)
                Console.Write("{0} ",i);
        }
    }
}
错误 控制离开当前方法之前必须对 out 参数“aleap”赋值
为什么?  如果我在上面声明的方法中修改一下 即注释的地方,又会提示
错误 不能在此范围内声明名为“aleap”的局部变量,因为这样会使“aleap”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了

求教,该怎么解决,上面的问题用return当然没问题,不过初学了out,想简单使用下,求教~!!!!!!!!
搜索更多相关主题的帖子: public 
2011-04-16 21:05
OneHunter
Rank: 2
等 级:论坛游民
帖 子:25
专家分:26
注 册:2010-10-28
得分:0 
不是吧,我在上面的方法中
for循环里for (i = 2; i <= n / 2; i++)
改成for (i = 2,aleap=0; i <= n / 2; i++)  ,程序运行就没有问题了,我纠结,现在问题算是解决了,  求高手讲解一下  out的用法,和我上面为什么提示错误,求教~!!!!!!!

我还好~!
2011-04-16 21:13
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
得分:0 
out参数必须在方法调用时赋值。
虽然看起来楼主方法中这样的语言肯定能为aleap赋值,但情况不一定是这样。

QQ:81704464
2011-04-17 06:23
lwsfyts
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:132
注 册:2011-4-3
得分:0 
//int aleap=0;
这句改为aleap=0;就OK了
2011-04-17 09:04
OneHunter
Rank: 2
等 级:论坛游民
帖 子:25
专家分:26
注 册:2010-10-28
得分:0 
回复楼上:
已经明白怎么修改了。对于上面提示的两个错误的理解是:
1,将leap的赋值放在了if语句中,在管理器看到可能不被赋值(尽管一定会被赋值),所以出错。
2,声明了一个新的变量leap,并赋值。  关键就在这个声明的变量,
(错误 不能在此范围内声明名为“aleap”的局部变量,因为这样会使“aleap”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了),          只要不声明,就不会出错。

问题是解决了,不过还想向各位请教,ref和out两个关键字 的使用限制?   求教~!!!!!!


我还好~!
2011-04-17 13:04
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
得分:0 
千万不要说“一定会被赋值。”
世界上没有东西是一定的,比如正要赋值时,停电了,怎么能“一定”呢?

[ 本帖最后由 athenalux 于 2011-4-17 14:05 编辑 ]

QQ:81704464
2011-04-17 13:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-336926-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042376 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved