草庐IT

c# - 返回两个数中较大值的方法

所以我有这段代码staticvoidMain(string[]args){Console.Write("FirstNumber=");intfirst=int.Parse(Console.ReadLine());Console.Write("SecondNumber=");intsecond=int.Parse(Console.ReadLine());Console.WriteLine("Greatestoftwo:"+GetMax(first,second));}publicstaticintGetMax(intfirst,intsecond){if(first>second){re

c# - 具有默认值的依赖属性抛出 StackOverflowException

我正在使用WPFSQLConnectionUserControl.每当我将它放在已打开、关闭然后再次打开的选项卡(AvalonDockDocumentTab)上时,我都会抛出StackOverflowException问题。为了更好地适应我的应用程序,我已经弄乱了Jake的基本实现,但它本质上是一样的。我添加了一个禁用数据库选择的属性。我已将控件放入我的应用程序中,如下所示:为了解决这个问题,我对SqlConnectionStringBuilder的代码隐藏进行了一些重构,但这似乎是有问题的代码:publicstaticreadonlyDependencyPropertyConnect

c# - 具有默认值的 XmlSerializer 和 List<T>

我在序列化和反序列化具有List类型成员的类时观察到一个奇怪的行为在构建时填充了默认值。与基于数组的属性不同,类型为List的属性不会在XmlSerializer反序列化时被清空。这是我的代码:publicclassProgram{publicclassConfig{publicConfig(){Test1=newList(){"A","B"};Test2=newString[]{"A","B"};}publicListTest1{get;set;}publicstring[]Test2{get;set;}}publicstaticvoidMain(){XmlSerializerxml

c# - 为什么 C# 对同一类型的不同值的重载方法调用不同?

我对c#方法重载和调用解析有一个疑问。假设我有以下C#代码:enumMyEnum{Value1,Value2}publicvoidtest(){method(0);//thiscallsmethod(MyEnum)method(1);//thiscallsmethod(object)}publicvoidmethod(objecto){}publicvoidmethod(MyEnume){}请注意,我知道如何使其工作,但我想知道为什么对于int(0)的一个值它调用一种方法而对于另一个(1)它调用另一个方法。这听起来很尴尬,因为这两个值具有相同的类型(int),但它们针对不同的方法“链接

c# - Moq - 验证具有参数值的方法调用

我正在尝试使用Moq测试调用具有“params”列表的方法,但由于某种原因,这失败了。方法签名是这样的:voidAttachAsModifiedToOrders(IOrderorder,paramsExpression>[]modifiedProperties);然后在Mock设置中我做了类似这样的事情来从模拟集合中做一个简单的“删除/插入”:MockEntities.Setup(n=>n.AttachAsModifiedToOrders(It.IsAny())).Callback>[]>((order,expr)=>{Orders.Remove(Orders.Where(o=>o.I

具有唯一键和值的 C# 字典类型

我想知道C#中是否有类似于“字典”的内置类型,但TKey和TValue都必须是唯一的。例如:d.Add(1,"1");d.Add(2,"1");//ThiswouldnotbeOKbecause"1"hasalreadybeenusedasavalue.我知道这有点奇怪,但似乎BCL中有大约10亿个集合类型,它可能存在。有什么想法吗? 最佳答案 使用Dictionary和HashSet/secondaryreverseDictionary怎么样-它将解决问题,并且比检查单个Dictionary的性能更好。像这样的东西,包装成类:Ha

c# - 具有多个值的 System.Data.SQLite 参数化查询?

我正在尝试使用参数化查询运行批量删除。目前,我有以下代码:pendingDeletions=newSQLiteCommand(@"DELETEFROM[centres]WHERE[name]=$name",conn);foreach(stringnameinselected)pendingDeletions.Parameters.AddWithValue("$name",name);pendingDeletions.ExecuteNonQuery();但是,参数的值似乎每次都被覆盖,我最终只删除了最后一个中心。使用值列表执行参数化查询的正确方法是什么? 最佳

c# - C# 中延迟执行和懒惰求值的区别

能否请您告诉我C#中延迟执行和惰性求值之间的确切差异是什么?这两个是同义词。有人可以举例说明区别吗? 最佳答案 实际上,它们的意思本质上是一样的。但是,最好使用术语延迟。懒惰是指“除非万不得已才去做。”延迟意味着“在调用者实际使用它之前不计算结果。”在实践中,当调用者决定使用评估结果时(即开始遍历IEnumerable),这正是需要完成“工作”的时间点(例如向数据库)。术语延迟更具体/描述了实际发生的事情。当我说我懒惰时,意思是我避免做不必要的工作;真正的含义是模棱两可的。然而,当我说执行/评估是延迟时,这实质上意味着我根本没有给你

c# - 使用 Linq 执行具有多个值的 Contains

我有一个药物表,我正在寻找某些药物名称,但我需要搜索多个名称。这是我目前的情况。string[]names=newstring[2];names[0]="apixaban";names[1]="desirudin";varmeds=(fromminMedicationswherenames.Any(m.BrandName.Contains)||names.Any(m.GenericName.Contains)selectm);我所拥有的不起作用,我目前被卡住了。我知道我很接近,但我不太清楚哪里出了问题。编辑为澄清起见,如果我要搜索的名称是地西卢定,那么品牌名称或通用名称会更长,因此我必

c# - 比较 2 个对象并检索具有不同值的字段列表

给定一个包含35个字段的类和2个具有一定数量不同字段值的对象。有没有一种聪明的方法来获得一个list对象所在的字段名称如下?例如obj1.Name="aaa";obj1.LastName="bbb";obj1.Address="xcs";obj2.Name="aaa";obj2.LastName="ccc";obj2.Address="jk";目标:listString>containing2StringsLastNameandAddress我认为反射是可行的方法,但我担心35个字段太重了。还有其他想法吗,比如linq? 最佳答案