【问题标题】:Extracting extension from a file in C#? [closed]从 C# 中的文件中提取扩展名? [关闭]
【发布时间】:2012-08-22 09:45:01
【问题描述】:
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 表示扩展名)。
提前致谢。

【问题讨论】:

  • 在我发帖之前,我想你已经得到了足够的答案
  • 另外,你传入了 cal 但在使用之前重新分配了它。我希望你只是在测试一些东西,因为这看起来很奇怪。
  • 我不得不用“public static void”替换“public static string”......现在它可以工作了。
  • 谢谢大家。这对我帮助很大。

标签: c# file extraction information-extraction


【解决方案1】:

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

添加

return extensie;

在第一个}之前

或者,如果您不想要返回值而只想要 console.writelines,只需将 public static string 更改为 public static void,然后您就不需要返回值

【讨论】:

    【解决方案2】:

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

    在函数的某处你应该有这样的语句:

    return extensie;
    

    【讨论】:

      【解决方案3】:

      通过定义你的方法像

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

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

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

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

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

      return extensie;
      

      在方法的末尾(右括号之前)

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

      【讨论】:

        【解决方案4】:

        你必须在你的函数中添加返回

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

        【讨论】:

          【解决方案5】:

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

          return extensie;
          

          【讨论】:

            【解决方案6】:

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

            最好的办法是用 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);
                    }
                }
            }
            

            【讨论】:

            • 星星改为“斜体”字体。
            【解决方案7】:

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

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

            例如:

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

            【讨论】:

            • 我没有投反对票,但我猜是因为原始发布者想知道错误,而不是获取文件扩展名的方法。
            • 我不是投了反对票,而是因为您没有回答实际问题而猜测-我不明白错误“Program.Program.GetExtension(string)”:并非所有代码路径返回一个值”。谁能告诉我我做错了什么,好吗?
            • 我会编辑,纠正,但我认为这个答案比发布的代码更优雅。重新发明TheWheel--
            • @ry8806 我更喜欢 Path.GetExtension。
            猜你喜欢
            • 2018-10-27
            • 1970-01-01
            • 2010-10-07
            • 2014-09-18
            • 2012-10-11
            • 2011-12-08
            • 2021-09-19
            • 2011-03-31
            相关资源
            最近更新 更多