我只想澄清一件事.这不是一个更好的问题,我要留给其他人讨论.我不在乎.在我的求职面试中,我被问到这个问题,我认为学习更多内容可能会有所帮助.
这些是我能想到的:
请添加您认为相关的其他人.
更新:刚刚弹出我的想法,Java没有像类,方法等的自定义属性那样的东西.或者它呢?
当我们谈论.NET世界时,CLR就是我们所做的一切.什么是CLR的最低知识,.NET程序员必须要成为一名优秀的程序员?你能给我一个/多个你认为是/最重要的科目:GC?,AppDomain ?, Threads?,Processes ?, Assemblies/Fusion?
如果您发布文章,博客,书籍或其他有关可以找到更多信息的主题的链接,我将非常感激.
更新:我从一些评论中注意到我的问题并不清楚.当我说CLR我不是指.Net Framework.它不是关于记忆.NET库,而是要了解执行环境(这些库在运行时的生存环境)是如何工作的.
我的问题直接受到了"调试Microsoft®.NET应用程序"一书(我推荐)的作者John Robbins的启发,以及Wintellect的Jeffrey Richter引用的同事.在其中一篇介绍性章节中,他说"......任何.NET程序员都应该知道什么是探测以及如何将程序集加载到运行时".你觉得还有其他这样的东西吗?
最后更新:在阅读了"CLR via C#"的前5章后,我必须对任何阅读此内容的人说.如果还没有,请阅读本书!
F#新手
我有2个文件夹2个XML文件c:\root\a\file.xml和c:\root\b\file.xml
它们具有相同的结构:
<parent>
<property name="firstName">Jane</property>
<property name="lastName">...</property>
<property name="dateOfBirth">...</property>>
</parent>
Run Code Online (Sandbox Code Playgroud)
我需要选择具有名称的属性节点具有firstName值Jane的文件.
在F#中(可能通过使用System.Xml.Linq)我尝试了几种解决方案但到目前为止都没有.有人愿意帮忙吗?
在我看过这个 PDC会话后,我想尝试学习一些F#.所以我认为最好的方法是用F#重写我已经在C#中完成的东西,但是我的大脑只是拒绝在功能模式中思考.我有这个抽象类,它有一些抽象方法和一些虚方法.我也想覆盖一些虚拟方法.这个类用C#编写并编译,我不打算用F#重写它.所以我的问题是:
任何帮助,将不胜感激.
更新:我真的很感激Brian的回答,但我仍然不清楚,所以我想澄清一下.让我们假装这是我用C#编写的抽象类,并在dll中编译.我如何在F#中实现它?
public abstract class MyAbstractClass
{
public abstract Person GetFullName(string firstName, string lastName);
public abstract bool TryParse(string fullName, out Person person);
public virtual IEnumerable<Person> GetChildren(Person parent)
{
List<Person> kids = new List<Person>();
foreach(Child person in GroupOfPeople)
{
if(person.Parent == parent)
kids.Add(child as Person);
}
return kids;
}
public virtual IEnumerable<Child> GroupOfPeople { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一些文档适合任何人寻找一些F#资源: - 如果任何其他F#有兴趣获得我在Don Syme(F#的创建者)的博客免费章节F#Expert中找到的一些文档.您可以下载doc格式的那些.
可能感兴趣的其他一些资源:
我有以下代码填充System.Collections.Generic.List我不喜欢它所以我想知道是否有更好的方法来做到这一点.
let getDirectories =
Directory.GetDirectories(_baseFolder)
let languagesList = new System.Collections.Generic.List<string>()
Seq.cast getDirectories
|> Seq.map(fun dir -> (new DirectoryInfo(dir)).Name)
|> fun range -> languagesList.AddRange(range)
Run Code Online (Sandbox Code Playgroud) 我在扩展类型(在F#中)有以下代码,它调用它继承的类的受保护方法(在C#中),但我得到了异常(见下文).这有解决方法吗?
let getPagereference id =
this.ConstructPageReference(id)
Run Code Online (Sandbox Code Playgroud)
无法访问成员或对象构造函数"ConstructPageReference".只能在声明类型中访问私有成员.受保护的成员只能从扩展类型访问,并且无法从内部lambda表达式访问.
更新:
我试过跟随但得到相同的结果
let getPagereference id =
base.ConstructPageReference(id)
Run Code Online (Sandbox Code Playgroud)
更新2(解决方案):
这是代码:
type MyNewType() =
inherit SomeAbstractType()
let getPagereference id =
base.ConstructPageReference(id)
override this.SomeMethod()=
let id = 0
let pr = getPagereference id
Run Code Online (Sandbox Code Playgroud)
这应该是这样的:
type MyNewType() =
inherit SomeAbstractType()
member this.ConstructPageReference(id) =
base.ConstructPageReference(id)
override this.SomeMethod()=
let id = 0
let pr = this.ConstructPageReference(id)
Run Code Online (Sandbox Code Playgroud) 如果是,你可以给出一个带无参数和"parameterfull"构造函数的类型的例子.
这是你建议使用的东西还是F#提供了一些替代的更多功能方式.如果是的话,请举一个例子吗?