让我提前道歉 – 我可能在屠杀术语。 我对封闭是什么有一个模糊的理解,但不能解释我所看到的行为。 至less,我认为这是一个封闭的问题。 我在网上search,但还没有find正确的关键字来得到我想要的。 具体来说 – 我有两个真正类似的代码块(至less在我眼中)。 第一: static void Main(string[] args) { Action x1 = GetWorker(0); Action x2 = GetWorker(1); } static Action GetWorker(int k) { int count = 0; // Each Action delegate has it's own 'captured' count variable return k == 0 ? (Action)(() => Console.WriteLine("Working 1 – {0}",count++)) : […]
关于我以前的问题 ,我需要检查一下,是否会被Castle Windsor实例化的组件可以在我的代码完成使用后被垃圾回收。 我已经在上一个问题的答案中尝试了这个build议,但至less对于我的代码来说,它似乎没有像预期的那样工作。 所以我想写一个unit testing,testing某个特定的对象实例是否可以在我的一些代码运行后被垃圾回收。 这可以做到可靠的方式吗? 编辑 根据Paul Stovell的回答,我目前有以下的testing成功: [TestMethod] public void ReleaseTest() { WindsorContainer container = new WindsorContainer(); container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy(); container.AddComponentWithLifestyle<ReleaseTester>(LifestyleType.Transient); Assert.AreEqual(0, ReleaseTester.refCount); var weakRef = new WeakReference(container.Resolve<ReleaseTester>()); Assert.AreEqual(1, ReleaseTester.refCount); GC.Collect(); GC.WaitForPendingFinalizers(); Assert.AreEqual(0, ReleaseTester.refCount, "Component not released"); } private class ReleaseTester { public static int refCount = 0; public ReleaseTester() { […]
我想序列化一个类的几个数据成员是Nullable对象,这里是一个例子 [XmlAttribute("AccountExpirationDate")] public Nullable<DateTime> AccountExpirationDate { get { return userPrincipal.AccountExpirationDate; } set { userPrincipal.AccountExpirationDate = value; } } 但是,在运行时我得到的错误 无法序列化System.Nullable`1 [System.DateTime]types的成员'AccountExpirationDate'。 XmlAttribute / XmlText不能用于编码复杂的types。 但是我检查和Nullable是一个SerializableAttribute 。 我究竟做错了什么?
我想这样左键单击NotifyIcon也会导致上下文菜单(使用ContextMenuStrip属性设置)也打开。 我将如何实现这一目标? 我必须处理点击,并找出自己的位置? 编辑:显示菜单与trayIcon.ContextMenuStrip.Show()结果是一些不受欢迎的行为: 菜单不显示在相同的位置,就好像右键单击NotifyIcon(看起来,不能将x和y坐标设置到任务栏所在的位置,至less在Windows 7上是我正在运行的位置)。 它会出现在任务栏上方(不是那么重要,但一致性会很好)。 当显示菜单时,有一个额外的图标添加到任务栏。 点击菜单以外的地方不会closures它(如果你右键点击调出上下文菜单,点击其他地方自动closures上下文菜单)。 完全可以调用菜单,但内置的右键单击处理程序正在做这件事吗?
我想将一个DataTable转换为IEnumerable。 其中T是我创build的自定义types。 我知道我可以通过创build一个列表来做到这一点,但我认为有一种使用IEnumerable的方法。 这是我现在拥有的。 private IEnumerable<TankReading> ConvertToTankReadings(DataTable dataTable) { var tankReadings = new List<TankReading>(); foreach (DataRow row in dataTable.Rows) { var tankReading = new TankReading { TankReadingsID = Convert.ToInt32(row["TRReadingsID"]), TankID = Convert.ToInt32(row["TankID"]), ReadingDateTime = Convert.ToDateTime(row["ReadingDateTime"]), ReadingFeet = Convert.ToInt32(row["ReadingFeet"]), ReadingInches = Convert.ToInt32(row["ReadingInches"]), MaterialNumber = row["MaterialNumber"].ToString(), EnteredBy = row["EnteredBy"].ToString(), ReadingPounds = Convert.ToDecimal(row["ReadingPounds"]), MaterialID = Convert.ToInt32(row["MaterialID"]), Submitted = […]
如何获得一个行和列在C#的长度? 例如 int matrix[,]= new int[2,3]; Row length = 2; Column Length = 3 ;
使用asp.net MVC我想在视图中做到这一点: <%= Html.TextBox("textbox1", null, new { class="class1" }) %> 这个语句不能编译,因为class是C#中的关键字。 我想知道怎样才能逃避这个编译的属性名称。 如果将“class”属性更改为“Class”(大写C),则可以将其编译。 但这是不合适的,因为严格的xhtml说,所有的属性(和元素)名称必须是小写。
如何从string中删除字符? 如果我有string"abcdef" ,我想删除"b" ,我该怎么做? 使用此代码删除第一个字符很简单: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char word[] = "abcdef"; char word2[10]; strcpy(word2,&word[1]); printf("%s\n", word2); return 0; } 和 strncpy(word2,word,strlen(word)-1); 会给我没有最后一个字符的string,但我仍然不知道如何删除string中间的字符。
我格式化数字string使用以下格式string“##。##”,在某些时候,我需要把这些数字string(1 234 567)转回像1234567.我试图去掉空字符但是发现 value = value.Replace(" ", ""); 由于某种原因,string保持1 234 567.看了string后,我发现 值[1]是160。 我想知道160是什么意思?
在for或foreach循环中处理对象的最佳做法是什么? 我们是否应该在循环之外创build一个对象并重新创build它(使用new …)或为每个循环迭代创build一个新对象? 例: foreach(var a in collection) { SomeClass sc = new SomeClass(); sc.id = a; sc.Insert(); } 要么 SomeClass sc = null; foreach(var a in collection) { sc = new SomeClass(); sc.id = a; sc.Insert(); } 哪个更好?