-2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Program
{

    class Program
    {

        public static string *GetExtension*(string cale) //GetExtension is an error
        {
            string fisier, extensie;
            cale = @"D:\dir1\dir2\";
            fisier = @"D:\dir1\dir2\fisier.txt";        

            extensie = Path.GetExtension(fisier);

            System.Console.WriteLine("Extensie: {0} returneaza {1}", fisier, extensie);

            extensie = Path.GetExtension(cale);

            System.Console.WriteLine("Extensie: {0} returneaza {1}", fisier, extensie);
        }
    }
}

我为这个业余帖子道歉。

我不明白错误"Program.Program.GetExtension(string)': not all code paths return a value"

谁能告诉我我做错了什么,好吗?

(哦,fisier 在我的语言中表示文件,cale 表示路径,extensie 表示扩展名)。
提前致谢。

4

7 回答 7

6

该函数应该返回一个字符串,但您没有返回语句

添加

return extensie;

在第一个之前}

或者,如果您不想要返回值而只想将 console.writelines 简单地更改public static stringpublic static void,那么您将不需要返回值

于 2012-08-22T09:47:06.963 回答
1

您的函数应返回一个字符串。您没有在整个函数中返回任何内容。

在函数的某处,您应该有如下语句:

return extensie;
于 2012-08-22T09:47:25.650 回答
1

通过定义你的方法,比如

public static string GetExtension(string cale) //GetExtension is an error

你说你的方法会返回一个字符串。

您的方法不会通过仅向屏幕输出某些内容来返回任何内容。所以像这样改变它:

public static void GetExtension(string cale) //GetExtension is an error

或者,如果您确实想返回某些东西,请确保输入以下行:

return extensie;

在您的方法结束时(在右大括号之前)

我建议查看此页面上的“返回值”部分:)

于 2012-08-22T09:49:01.800 回答
0

您必须将 return 添加到您的功能

public static string *GetExtension*(string cale) //GetExtension is an error
{

    string fisier, extensie;

    cale = @"D:\dir1\dir2\";

    fisier = @"D:\dir1\dir2\fisier.txt";


    extensie = Path.GetExtension(fisier);

    System.Console.WriteLine("Extensie: {0} returneaza {1}", fisier, extensie);


    extensie = Path.GetExtension(cale);

    System.Console.WriteLine("Extensie: {0} returneaza {1}", fisier, extensie);

    return extensie; //<----------------
}
于 2012-08-22T09:47:08.770 回答
0

是的,您需要从您的函数中返回一个字符串,例如

return extensie;
于 2012-08-22T09:47:58.230 回答
0

我猜你的语言是法语,所以如果你愿意,我可以给你翻译,但用英文回答你的问题:

最好的方法是用 public static void 替换 public static String

另外,我不明白你为什么在 GetExtension 周围有星星

给予:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Program {
    class Program
    {
        public static void GetExtension(string cale) //GetExtension is an error
        {
        string fisier, extensie;
        cale = @"D:\dir1\dir2\";
        fisier = @"D:\dir1\dir2\fisier.txt";

        extensie = Path.GetExtension(fisier);
        System.Console.WriteLine("Extensie: {0} returneaza {1}", fisier, extensie);
        extensie = Path.GetExtension(cale);
        System.Console.WriteLine("Extensie: {0} returneaza {1}", fisier, extensie);
        }
    }
}
于 2012-08-22T09:50:36.410 回答
-1

您的方法被标记为“公共静态字符串”,这意味着您需要一个“返回字符串;” 陈述。如果您不希望该方法返回一个值,那么您可以将方法定义替换为“public static void”,这意味着“我不会返回任何东西”

附带说明:您可以使用FileInfo类来获取相关文件的扩展名。它的代码更少,并且已经为您完成了:)

例如:

        FileInfo fInfo = new FileInfo(path);
        string extension = fInfo.Extension;
于 2012-08-22T09:49:23.500 回答