草庐IT

c# - 如何使 IEnumerable<T> 只读?

为什么下面代码的Main方法中的列表list1Instance和p指向同一个集合?classPerson{publicstringFirstName=string.Empty;publicstringLastName=string.Empty;publicPerson(stringfirstName,stringlastName){this.FirstName=firstName;this.LastName=lastName;}}classList1{publicListl1=newList();publicList1(){l1.Add(newPerson("f1","l1"));l1

c# - 使窗体的背景透明

如何使我的表单背景透明?在C#中可以吗?提前致谢! 最佳答案 您可以将表单的BackColor设置为不常见的颜色(例如Color.Magenta),然后将表单的TransparencyKey属性设置为相同的颜色。然后,将FormBorderStyle设置为None。当然,这只是快速简便的解决方案。控件的边缘很难看,您必须不断更改添加的新控件的背景颜色(如果它们是按钮或类似的东西)以及一大堆其他问题。这实际上取决于您想要实现的目标。它是什么?如果你想做一个小部件之类的东西,有更好的方法。如果您需要圆角或自定义背景,还有更好的方法。因此

c# - 除非继承,否则使 C# 不实例化类的最简单方法?

使C#不实例化类除非继承的最简单方法是什么?听起来很奇怪,但我不想解释原因。我有一个基类和两个继承它的类。我只想使用派生类而不是基类。派生类没有任何额外的功能。不允许我编写newBaseClass();的最简单方法是什么?所以我不会不小心使用它?我确实有对基类而不是派生类进行操作的函数。 最佳答案 使该类成为抽象基类。abstractclassPerson{}classProgrammer:Person{}varperson=newPerson();//compiletimeerrorvarprogrammer=newProgram

c# - 使 Linq to Sql 使用 ISNULL 而不是 COALESCE 生成 T-SQL

我有一个linqtosql查询,它返回一些余额非零的订单(事实上,查询有点复杂,但为了简单起见,我省略了一些细节)。这个查询也应该返回没有CardItems的订单(在T-SQL中两个子查询都返回NULL,并且比较两个NULLS给出FALSE,所以我将子查询的NULL结果值转换为0以进行比较)。varq=(fromoindb.Orderswheredb.Cards(p=>p.OrderId==o.Id&&p.Sum+(db.CardItems.Where(i=>i.IncomeId==p.Id).Sum(i=>(double?)i.Amount)??0)!=(db.CardItems.W

c# - 与 WindowChrome 一起使用时,窗口模板中的边框边距没有任何效果

我正在检查System.Windows.Shell库(v3.5.41019.1)中的WindowChrome类。当我尝试创建Window模板时,模板中Border元素的边距似乎没有效果:你认为这是什么原因?我想知道,因为我看到有些人使用类似*:但由于它对我的测试没有任何影响,这样做的意义何在?(*)使用它的地方之一是ModernUI项目CodePlex.编辑:我已经在打开Aero的Windows7上对此进行了测试。编辑2:Aero关闭时仍然是一样的。 最佳答案 根据MSDN,WindowChrome是Representsanobje

c# - 如何使 .NET COM 对象成为单元线程?

.NET对象默认是自由线程的。如果通过COM编码到另一个线程,它们总是被编码到自己,无论创建者线程是否为STA,也无论它们的ThreadingModel注册表值如何。我怀疑,他们汇总了FreeThreadedMarshaler(有关COM线程的更多详细信息,请参见here)。我想让我的.NETCOM对象在编码到另一个线程时使用标准的COM编码器代理。问题:usingSystem;usingSystem.Runtime.InteropServices;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows

c# - 仅在构造函数中使用私有(private) setter 是否会使对象线程安全?

我知道我可以像这样创建一个不可变的(即线程安全的)对象:classCantChangeThis{privatereadonlyintvalue;publicCantChangeThis(intvalue){this.value=value;}publicintValue{get{returnthis.value;}}}但是,我通常会“作弊”并这样做:classCantChangeThis{publicCantChangeThis(intvalue){this.Value=value;}publicintValue{get;privateset;}}然后我想知道,“为什么这行得通?”它真

c# - 测试和模拟私有(private)/ protected 方法。许多帖子,但仍然无法使一个示例起作用

我看过很多关于“Mockingaprivatemethod”的帖子和问题,但仍然无法让它工作,也没有找到真正的答案。让我们忘记代码的味道,你不应该这样做等等......据我所知,我做了以下事情:1)创建了一个类库“MyMoqSamples”2)添加了对Moq和NUnit的引用3)编辑AssemblyInfo文件并添加[装配:InternalsVisibleTo(“DynamicProxyGenAssembly2”)][程序集:InternalsVisibleTo("MyMoqSamples")]4)现在需要测试一个私有(private)方法。因为它是一个私有(private)方法,所以

c# - 打乱字符串,使相邻的两个字母不相同

我一直在尝试解决这个面试问题,该问题要求打乱一个字符串,以便没有两个相邻的字母相同例如,ABCC->ACBC我想到的方法是1)Iterateovertheinputstringandstorethe(letter,frequency)pairsinsomecollection2)Nowbuildaresultstringbypullingthehighestfrequency(thatis>0)letterthatwedidn'tjustpull3)Update(decrement)thefrequencywheneverwepullaletter4)returntheresultst

c# - 使整行在 GridView 中可点击

我有一个gridview,我需要在单击某行时触发一个事件。是否需要绑定(bind)现有的GridView事件才能实现此目的? 最佳答案 这是我之前准备的东西:publicclassRowClickableGridView:GridView{publicStyleHoverRowStyle{get{returnViewState["HoverRowStyle"]asStyle;}set{ViewState["HoverRowStyle"]=value;}}publicboolEnableRowClickSelection{get{re