为了快速的开发小软件,我利用C#中的动态编译做了一个“C#解释器”,当然它并不是解释执行的。
完了以后,编写了一些C#脚本,在此期间发现了一些在IDE中编程会忽略的知识,下面一一列举一下。
STAThread
一次编写脚本时,发现FolderBrowserDialog好像失效了,不能正常弹出。
后来发现,FolderBrowserDialog等控件实际是com组件,com组件只能运行在STA线程中。
解决方法有二:在Main函数上方加入[STAThread]标签,使主线程成为STA线程;或者在程序中new一个线程,并设置为STA线程,然后在其中使用FolderBrowserDialog。
命名空间和dll名称不对应的两处
.NET中的命名空间的名字,一般和dll名是相同的。
虽然可以不同,但是那样用很别扭,一般人也不会那样用。
我发现.NET中命名空间和dll名称不对应的有两处。
一是,命名空间System.Linq的代码有一部分存在于System.Core.dll中,比如Skip()方法。
二是,命名空间System.Xml对应的dll为System.XML。
第一处可以理解,第二处我感觉算是设计缺陷。
原文地址:https://www.cnblogs.com/fabao/p/9457979.html
时间: 2024-10-14 07:44:04