【问题标题】:Use integer values for path names in c#在 c# 中使用整数值作为路径名
【发布时间】:2017-05-29 08:09:26
【问题描述】:

我想将某个文件与其他 10 个类似以下名称的文件进行比较:s0、s1、s2、s3 等。我希望将其循环。我怎样才能做到这一点?这可能吗?

假设 s0 文件的路径如下所示:C:\Users\raymond\desktop\s0

而 s1 看起来像这样:C:\Users\raymond\desktop\s1 等等。

如果在 for 循环中使用整数 i。代码应该看起来像这样(但这显然不起作用):

int x = compareImg(certain file, C:\Users\raymond\desktop\s + i)

更新:对不起,伙计们。 s0、s1 等文件的路径在我的资源文件夹中,它是一个位图,我不能使用字符串作为输入值。

【问题讨论】:

  • 试试$"C:\Users\raymond\desktop\s{i}" 注意:这只适用于C# 6.0+
  • @Tamás Szabó:根据他的 .Net Framework 版本,这将不起作用
  • 你需要引号..."c:\\users\\raymond\\desktop\\s" +i

标签: c# string path integer


【解决方案1】:

你需要将int转换为字符串:

int x = compareImg(certainFile, @"C:\Users\raymond\desktop\s" + i);

编辑:

如果第二个参数需要是位图,可以这样调用:

int x = compareImg(certainFile, new Bitmap(@"C:\Users\raymond\desktop\s" + i));

【讨论】:

  • 我不能使用字符串作为输入,它需要是资源文件夹中的位图。有什么想法吗?
  • 能否请您使用“compareImg”的签名更新您的问题
  • 抱歉什么是签名?该方法需要位图文件,或者System.Drawing.Bitmap
  • 好的,那么确定文件是什么?一个字符串(文件的路径)还是已经是位图对象?
  • ToString 调用是多余的。编译器将自行调用,因为它将为字符串采用合适的 + 运算符重载
【解决方案2】:

我建议字符串插值以使路径代码可读:

 //TODO: put right loop here
 for (int i = 0; i < 100; ++i) {
   string path = $@"C:\Users\raymond\desktop\s{i}";

   int x = compareImg(certain file, path); 

   //TODO: put relevant code here  
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2010-12-31
    • 2019-05-15
    相关资源
    最近更新 更多