目录名中的空值在创建时不会返回异常

时间:2013-01-29 19:30:23

标签: c#

我刚刚遇到一个同事正在从列表中创建目录的情况。恰好这样,列表中的一个项目为null,但异常不为null。

为了满足我的好奇心,我写了一个测试程序来模仿他在做什么。此测试程序尝试在c:\ Temp中创建一个已存在的空目录。我希望抛出一个Null Exception,但没有抛出任何异常。

这是我的测试程序。

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

namespace CreateNullDirectory
{
  class Program
  {
    static void Main(string[] args)
    {
        String DirectoryName = null;

        String FullDirectoryName = string.Format("c:\\Temp\\{0}",DirectoryName);

        Console.WriteLine(string.Format("Creating Directory {0}", FullDirectoryName));

        try
        {
            Directory.CreateDirectory(FullDirectoryName);
            Console.WriteLine(string.Format("Successfully created directory {0}", FullDirectoryName));
        }
        catch (Exception ex)
        {
            Console.WriteLine(string.Format("Error creating {0} - {1}", FullDirectoryName, ex.Message));
        }

        Console.ReadLine();

    }
  }
}

这是输出:

enter image description here

CreateDirectory是否忽略终止null并且我只是尝试创建已经存在的C:\ Temp?

1 个答案:

答案 0 :(得分:2)

您所做的只是调用Directory.CreateDirectory("C:\Temp"),因为在格式字符串中传递空值会返回string.Empty

如果目录不存在,

CreateDirectory会创建目录,如果目录已经存在,则不执行任何操作。