-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ステートメントがありません

追加

return extensie;

最初の前に}

または、戻り値が必要でなく、単にconsole.writelinesが必要な場合は、に変更public static stringするだけpublic 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

あなたの言語はフランス語だと思いますので、よろしければ翻訳を差し上げますが、質問には英語でお答えします。

最良の方法は、publicstaticStringをpublicstaticvoidに置き換えることです。

また、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

メソッドは「publicstaticstring」としてマークされています。これは、「returnstring;」が必要であることを意味します。声明。メソッドが値を返さないようにする場合は、メソッド定義を「public static void」に置き換えることができます。これは、「何も返さない」ことを意味します。

補足:FileInfoクラスを使用して、問題のファイルの拡張子を取得できます。その少ないコードとあなたのために行われました:)

例えば:

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