C#目前势头良好.为了切换(或返回)到Java ,您需要具备哪些功能?
如果人们为当前的Java版本发布了这些的变通方法,例如Nullables被自定义类包装,那么这将是非常有用的,以使这个更有趣的wiki.
在Java中,可以重命名线程.在.NET中它不是.这是因为Name是Thread类中一次写入的属性:
public string Name
{
get
{
return this.m_Name;
}
[HostProtection(SecurityAction.LinkDemand, ExternalThreading=true)]
set
{
lock (this)
{
if (this.m_Name != null)
{
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_WriteOnce"));
}
this.m_Name = value;
InformThreadNameChangeEx(this, this.m_Name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于Java允许线程重命名并且所使用的大多数底层线程结构都是在两个平台上提供操作系统,我倾向于认为我实际上可以在C#中重命名线程,如果我避免使用某些功能)我不在乎或b)根本不使用.
你知道为什么Thread重命名是一次写入操作吗?如果更改名称有什么想法吗?
我尝试过一个测试,我将线程重命名为:
var t1 = new Thread(TestMethod);
t1.Name = "abc";
t1.Start();
t1.GetType().GetField("m_Name", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(t1, "def");
t1.GetType().GetMethod("InformThreadNameChangeEx", BindingFlags.NonPublic | BindingFlags.Static).Invoke(t1, new object[] { t1, t1.Name});
Run Code Online (Sandbox Code Playgroud)
结果是名称确实已更改,这反映在使用此线程的其他代码上.这样做的背景是我需要记录线程所做的事情以及我使用的日志库(log4net)使用Thread.Name来指定哪个线程执行哪个操作.提前致谢.
编辑:请停止建议明显的事情!如果我问如何重命名它,我知道如何在开始时命名一个线程.
我需要这样做的原因是,线程将被重用,并且它可能被另一个组件使用,我想表示这个,如果有时会发生日志记录,以便有一个特定的线程名称而不是通用数字.
我知道Eclipse和Idea的键盘配置文件很好地反映了VS 2k8键映射/快捷键的体验,但是你知道在哪里可以找到我选择的IDE,Netbeans吗?
可以从其他IDE导入吗?
我已经看到和听说过各种Silverlight限制,例如文件I/O限制,一些反射限制,可以使用哪些语言的限制,打印,分辨率等.
你能否编译一下所有主要的Silverlight限制列表,与完整的.NET应用程序相比?这是最新版本(4.0).
我不是要求课程参考,而是要求高级功能.如果有的话,提出一些解决方法会很好,但这不是必需的.
非常感谢
Java是一种流行的语言和平台,拥有庞大的生态系统.是否有C#4.0及其平台应具备的功能,以使您完全切换到C#编程?
在这里和那里的几个类中使用了可选参数,我开始非常不喜欢它们在某些情况下因重载解决而导致的麻烦,即由于签名冲突而导致委托给它们的困难,以及动态调用问题关于方法参数计数.
如何在Visual Studio IDE(2010)项目中搜索所有文件并找到所有可选参数用法?我可以使用一个聪明的正则表达吗?或者可能使用不支持可选参数的旧版Visual Studio?我试图避免手动扫描项目中的文件的麻烦,因为它可能是令人厌倦和容易出错的.谢谢!