从C#中的文件中提取扩展名?

时间:2012-08-22 09:45:01

标签: c# file extraction information-extraction

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 mean path和extensie表示我的语言扩展名) 在此先感谢。

7 个答案:

答案 0 :(得分:6)

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

添加

return extensie;

在第一个}

之前

或者如果你不想要一个返回值而只是想要console.writelines只需将public static string更改为public static void,那么你就不需要返回值

答案 1 :(得分:1)

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

在函数的某个地方你应该有一个语句:

return extensie;

答案 2 :(得分:1)

通过定义您的方法

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

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

你的方法,只是输出一些东西到屏幕上不会返回任何内容。所以改变它:

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

或者,如果您确实要返回某些内容,请确保将此行放入:

return extensie;

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

我建议查看this page上的'返回值'部分:)

答案 3 :(得分:0)

您必须将回复添加到您的功能

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; //<----------------
}

答案 4 :(得分:0)

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

return extensie;

答案 5 :(得分: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);
        }
    }
}

答案 6 :(得分:-1)

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

旁注: 您可以使用FileInfo类来获取相关文件的扩展名。它的代码较少,已为您完成:)

例如:

        FileInfo fInfo = new FileInfo(path);
        string extension = fInfo.Extension;