我刚刚遇到一个同事正在从列表中创建目录的情况。恰好这样,列表中的一个项目为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();
}
}
}
这是输出:
CreateDirectory是否忽略终止null并且我只是尝试创建已经存在的C:\ Temp?
答案 0 :(得分:2)
您所做的只是调用Directory.CreateDirectory("C:\Temp")
,因为在格式字符串中传递空值会返回string.Empty
。
CreateDirectory
会创建目录,如果目录已经存在,则不执行任何操作。