有谁知道答案和/或有关于它的意见?
由于元组通常不会很大,我认为使用结构比使用类更有意义.怎么说你?
.NET 4.0中有一个很好的新方法,可以通过枚举以流方式获取目录中的文件.
这里的问题是,如果想要枚举所有文件,可能事先不知道哪些文件或文件夹受到访问保护并且可能抛出UnauthorizedAccessException.
要重现,可以运行此片段:
foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories))
{
// whatever
}
Run Code Online (Sandbox Code Playgroud)
在此.NET方法存在之前,通过在字符串数组返回方法上实现递归迭代器,可以实现大致相同的效果.但它并不像新的.NET方法那么懒惰.
那么该怎么办?使用此方法时,UnauthorizedAccessException可以被抑制还是生活中的事实?
在我看来,该方法应该有一个重载接受一个动作来处理任何异常.
我想在用户选择DataGrid中的行时执行命令.
我看到有可能将单元格内容包装在按钮中(虽然我不想要按钮样式) - 但我不想在单元级别进行.
我还看到可以使用行为将命令链接到事件.但最好不要为了这样一个共同的任务而采取行动.
是否可以通过普通的旧命令数据绑定来完成此操作?
所以:1)用户点击DataGrid行2)命令对视图模型进行了触发.
提前致谢.
在我看来,.NET存在极端缺乏安全,不可变的集合类型,特别是BCL,但我还没有看到很多工作在外面完成.有没有人有任何指向(优选)生产质量,快速,不可变的.NET集合库.快速列表类型是必不可少的.我还没准备好切换到F#.
*编辑:注意搜索者,很快就会进入BCL: .NET不可变集合
我已经以Entity Framework Code-First约定的方式定义了一组类,并使用System.ComponentModel.DataAnnotations属性注释了类属性.
现在我想从此代码生成SQL Server Compact Edition(SCSE)(4.0)数据库.
需要什么代码才能执行此操作以及需要导入哪些程序集?
到目前为止,我已导入C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition\v4.0\Desktop {System.Data.SqlServerCe.dll,System.Data.SqlServerCe.Entity\System.Data.SqlServerCe. Entity.dll} dll文件.
任何指针赞赏.文章和诸如此类的.
.net entity-framework code-first sql-server-ce ef-code-first
我有一个令人烦恼的错误.
type Animal =
abstract member Name : string
type Dog (name : string) =
interface Animal with
member this.Name : string =
name
let pluto = new Dog("Pluto")
let name = pluto.Name
Run Code Online (Sandbox Code Playgroud)
最后一行,特别是"Name"生成编译器错误,指出"未定义字段,构造函数或成员'Name'".
我用过的解决方法是写
let name = (pluto :> Animal).Name
Run Code Online (Sandbox Code Playgroud)
然而,这非常烦人并且产生许多视觉噪音.是否可以在F#中执行某些操作以便能够解析Name而不会明确告诉编译器Name是Animal类型的派生成员?
f# overloading interface explicit-interface overload-resolution
这个例子"失败":
static async void Main(string[] args)
{
try
{
await TaskEx.Run(() => { throw new Exception("failure"); });
}
catch (Exception)
{
throw new Exception("success");
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,文本"失败"的例外会冒泡.
然后我尝试了这个解决方法:
static async void Main(string[] args)
{
try
{
await SafeRun(() => { throw new Exception("failure"); });
}
catch (Exception)
{
throw new Exception("success");
}
}
static async Task SafeRun(Action action)
{
var ex = default(Exception);
await TaskEx.Run(() =>
{
try
{
action();
}
catch (Exception _)
{
ex = _;
}
}); …Run Code Online (Sandbox Code Playgroud) 我有这个问题困扰着我; 它被封装为一个新的查询运算符,我制作了两个版本,试图看看哪个更好.两者表现得非常糟糕.
第一次尝试; 陈述式
public static IEnumerable<IEnumerable<?>> Section<?>(this IEnumerable<?> source, int length)
{
return source.Any()
? source.Take(length).Cons(source.Skip(length).Section(length))
: Enumerable.Empty<IEnumerable<?>>();
}
Run Code Online (Sandbox Code Playgroud)
第二次尝试:势在必行的"收益率回报"风格
public static IEnumerable<IEnumerable<?>> Section<?>(this IEnumerable<?> source, int length)
{
var fst = source.Take(length);
var rst = source.Skip(length);
yield return fst;
if (rst.Any())
foreach (var section in rst.Section(length))
yield return section;
}
Run Code Online (Sandbox Code Playgroud)
事实上,第二次尝试在可读性,组合性和速度方面都更糟糕.
关于如何优化这个的任何线索?
你使用LINQ to Objects优化技术或者你在野外看到了什么?
在等待"产生foreach"和其他语言/编译器优化到201x中的C#时,我很有意思尽一切可能使LINQ在任何地方使用,而不是性能上的痛苦.
到目前为止,我看到的一种模式是为特定的组合器创建自定义的IEnumerable实现,这样可以多次重新枚举枚举.
c# ×4
.net ×3
performance ×3
optimization ×2
.net-4.0 ×1
async-await ×1
c#-5.0 ×1
class ×1
code-first ×1
command ×1
data-binding ×1
datagrid ×1
exception ×1
f# ×1
filesystems ×1
immutability ×1
interface ×1
linq ×1
linq-to-sql ×1
linqpad ×1
overloading ×1
select ×1
struct ×1
wpf ×1