我有以下代码通过目录递归搜索文件,该目录返回所有xml文件的列表给我.一切正常,但根目录中的xml文件不包含在列表中.
我理解为什么,因为它首先做的是获取根目录中的目录,然后获取文件,从而错过了根目录上的GetFiles()调用.我尝试在foreach之前包含GetFiles()调用,但结果并不像我预期的那样.
public static ArrayList DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d, "*.xml"))
{
string extension = Path.GetExtension(f);
if (extension != null && (extension.Equals(".xml")))
{
fileList.Add(f);
}
}
DirSearch(d);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return fileList;
}
Run Code Online (Sandbox Code Playgroud)
我的目录结构类似于:
RootDirectory
test1.0.xml
test1.1.xml
test1.2.xml
2ndLevDir
test2.0.xml
test2.1.xml
3rdLevDir
test3.0.xml
test3.1.xml
Run Code Online (Sandbox Code Playgroud)
代码返回:
test2.0.xml
test2.1.xml
test3.0.xml
test3.1.xml
Run Code Online (Sandbox Code Playgroud)
我想返回每个文件,包括:
test1.0.xml
test1.1.xml
test1.2.xml
Run Code Online (Sandbox Code Playgroud)
不太适用于递归.任何指针都将非常感激.
我理解递归互斥锁允许互斥锁被锁定不止一次而不会陷入死锁,应该解锁相同的次数.但是在什么特定情况下你需要使用递归互斥体?我在寻找设计/代码级别的情况.
我需要递归列出C编程中的所有目录和文件.我已经研究过FTW但是我没有使用这两种操作系统(Fedora和Minix).从过去几个小时里读到的所有不同的东西开始,我开始感到头疼.
如果有人知道我可以看到的代码片段那将是惊人的,或者如果有人能给我一个好的方向,我会非常感激.
在Python中,有一个最大的递归深度.似乎这是因为Python是一个解释器,而不是编译器.C++有相同的概念吗?或者它只与RAM限制连接?
在这个答案中,一个承诺链是递归建立的.
稍微简化,我们有:
function foo() {
function doo() {
// always return a promise
if (/* more to do */) {
return doSomethingAsync().then(doo);
} else {
return Promise.resolve();
}
}
return doo(); // returns a promise
}
Run Code Online (Sandbox Code Playgroud)
据推测,这会产生一个调用堆栈和一个承诺链 - 即"深"和"宽".
我预计内存峰值会大于执行递归或单独建立一个promise链.
我正在为HtmlHelper编写一个脏的小扩展方法,以便我可以说HtmlHelper.WysiwygFor(lambda)之类的内容并显示CKEditor.
我现在有这个工作,但它似乎比我想要的更麻烦.我希望有更直接的方式来做到这一点.
这是我到目前为止所拥有的.
public static MvcHtmlString WysiwygFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
return MvcHtmlString.Create(string.Concat("<textarea class=\"ckeditor\" cols=\"80\" id=\"",
expression.MemberName(), "\" name=\"editor1\" rows=\"10\">",
GetValue(helper, expression),
"</textarea>"));
}
private static string GetValue<TModel, TProperty>(HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
MemberExpression body = (MemberExpression)expression.Body;
string propertyName = body.Member.Name;
TModel model = helper.ViewData.Model;
string value = typeof(TModel).GetProperty(propertyName).GetValue(model, null).ToString();
return value;
}
private static string MemberName<T, V>(this Expression<Func<T, V>> expression)
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
throw new InvalidOperationException("Expression must …Run Code Online (Sandbox Code Playgroud) Java 8引入了lambda函数,我想实现像factorial这样的东西:
IntToDoubleFunction fact = x -> x == 0 ? 1 : x * fact.applyAsDouble(x-1);
Run Code Online (Sandbox Code Playgroud)
编译返回
error: variable fact might not have been initialized
Run Code Online (Sandbox Code Playgroud)
我怎样才能参考功能本身.类是匿名的但是实例存在:它被调用fact.
我有以下代码:
class myClass
{
private delegate string myDelegate(Object bj);
protected void method()
{
myDelegate build = delegate(Object bj)
{
var letters= string.Empty;
if (someCondition)
return build(some_obj); //This line seems to choke the compiler
else string.Empty;
};
......
}
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在C#中设置匿名方法,以便它可以调用自己?
我有一个带有DataAnnotation属性的对象图,其中对象的某些属性是本身具有验证属性的类,依此类推.
在以下场景中:
public class Employee
{
[Required]
public string Name { get; set; }
[Required]
public Address Address { get; set; }
}
public class Address
{
[Required]
public string Line1 { get; set; }
public string Line2 { get; set; }
[Required]
public string Town { get; set; }
[Required]
public string PostalCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试来验证Employee的Address与没有价值PostalCode,那么我想(和期望)例外,但我得到没有.我是这样做的:
var employee = new Employee
{
Name = "Neil Barnwell",
Address = new Address …Run Code Online (Sandbox Code Playgroud) recursion ×10
c# ×3
c++ ×2
lambda ×2
.net ×1
asp.net-mvc ×1
c ×1
cuda ×1
html-helper ×1
java ×1
java-8 ×1
javascript ×1
limit ×1
linux ×1
mutex ×1
promise ×1
validation ×1