请考虑以下代码:
class Program
{
static void Main(string[] args)
{
A a = new A();
CreateB(a);
GC.Collect();
GC.WaitForPendingFinalizers();
Console.WriteLine("And here's:" + a);
GC.KeepAlive(a);
}
private static void CreateB(A a)
{
B b = new B(a);
}
}
class A
{ }
class B
{
private WeakReference a;
public B(A a)
{
this.a = new WeakReference(a);
}
~B()
{
Console.WriteLine("a.IsAlive: " + a.IsAlive);
Console.WriteLine("a.Target: " + a.Target);
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下输出:
a.IsAlive: False
a.Target:
And here's:ConsoleApp.A
Run Code Online (Sandbox Code Playgroud)
为什么它是假的而且是空的?尚未收到A.
编辑:哦,你们没有信心.
我添加了以下几行:
Console.WriteLine("And here's:" + …Run Code Online (Sandbox Code Playgroud) List<string> list = new List<string>() {"a", "b", "c"};
IEnumerable<string> enumerable = list;
int c1 = list.Count;
int c2 = list.Count();
int c3 = enumerable.Count();
Run Code Online (Sandbox Code Playgroud)
最后3个陈述之间在性能和实施方面是否存在差异?将list.Count()表现更差或相同list.Count,如果引用类型IEnumerable<string>是否重要?
我正在使用VS2010和Resharper 5.1.
我有两个项目,一个库项目(Lib)和一个应用程序项目(App),App引用Lib.
Lib包含一个在App和Lib中使用的类X. 在App中,我现在想要用Y类替换X的所有用法.在我的情况下,Y与X无关,但如果它使重构更容易,它可以从X继承.
我目前计划使用"查找用法"功能,逐个项目并逐个更改用法.有没有更简单/自动化的方法来做到这一点?
关于WPF我注意到的一件事是它结合了我所知道的其他计算机语言的各种概念,而其他概念对我来说是全新的.
哪些语言可以帮助WPF新手理解不同的WPF概念?
例如,如果您了解XSL,那么DataTemplates看起来会很熟悉,并且样式/ UI /逻辑的分离对于以前使用HTML/CSS/JavaScript的人来说并不是新的.
但是Bindings,MarkupExtensions,Resources,RoutedEvents/Commands,Attached Properties等等.
是否有一些语言可以帮助理解大多数WPF概念?哪些概念对WPF来说是完全独特的?
那么......除了HTML和XSL之外,只有Cocoa有一个类似WPF的概念吗?我知道像RoutedEvents这样的东西与WPF视觉/逻辑树结构非常相关,因此不太可能在没有类似结构的平台中看到,但像Attached Properties这样的概念在许多非UI场景中似乎很有用.
我制作了一个WPF浏览器应用程序来托管旧的WinForms控件(我还没有完全迁移到WPF).使用WindowsFormsHost意味着我的浏览器应用程序需要完全信任才能运行.这对我来说不是问题,因为这个应用程序只能在我公司的内部网上运行.但是,在我将xbap部署到网络共享后,它拒绝运行,说"Trust not granted".
我可以使用哪些方法将Full Trust授予存储在我公司内部网上的XBAP应用程序?