Tag: C#的

在XDocument中查找元素?

我有一个简单的XML <AllBands> <Band> <Beatles ID="1234" started="1962">greatest Band<![CDATA[lalala]]></Beatles> <Last>1</Last> <Salary>2</Salary> </Band> <Band> <Doors ID="222" started="1968">regular Band<![CDATA[lalala]]></Doors> <Last>1</Last> <Salary>2</Salary> </Band> </AllBands> 但是, 当我想要达到“门带”并更改其ID: using (var stream = new StringReader(result)) { XDocument xmlFile = XDocument.Load(stream); var query = from c in xmlFile.Elements("Band") select c; … query 没有结果 但 如果我写xmlFile.Elements().Elements("Band")所以它find它。 问题是什么 ? 根需要完整的path吗? 如果是这样,为什么它没有指定AllBands ? XDocument导航是否要求我知道完整级别的结构到所需的元素?

鼠标结束时更改button的颜色

当IsMouseOver == True时,我想改变一个button的背景颜色 <Button Command="{Binding ClickRectangleColorCommand}" Background="{Binding Color ,Converter={StaticResource RGBCtoBrushColorsConverter},Mode=TwoWay}" Width="auto" Height="40"> <TextBlock Foreground="Black" Text="{Binding Color, Converter={StaticResource RGBCColorToTextConveter},Mode=TwoWay}"/> <Button.Style> <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="DarkGoldenrod"/> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button> 我似乎无法理解为什么这个触发器不工作。

为什么编译器让我在C#中将特定的types转换为null?

考虑这个代码: var str = (string)null; 当写代码这是我的IL代码: IL_0001: ldnull IL有Cast操作符,但是: var test = (string) new Object(); IL代码是: IL_0008: castclass [mscorlib]System.String 所以将null强制转换为string被忽略。 为什么编译器让我把null成特定的types?

如何在EF查询中执行date比较?

请帮忙。 我想弄清楚如何使用DATE或DATETIME在linq查询进行比较。 例如:如果我想为今天之前开始的所有员工名称,我会在SQL中做这样的事情: SELECT EmployeeNameColumn FROM EmployeeTable WHERE StartDateColumn.Date <= GETDATE() //Today 但是linq呢? DateTime startDT = //Today var EmployeeName = from e in db.employee where e.StartDateColumn <= startDT 上面的WHERE不起作用: exception详细信息:System.NotSupportedException:LINQ to Entities不支持指定的types成员“Date”。 仅支持初始化器,实体成员和实体导航属性。

从一个简单的(最简单的)C编译器开始?

我碰到这个: 使用Turbo Pascal编写一个编译器 我很好奇,如果有任何教程或参考解释如何创build一个简单的C编译器。 我的意思是,只要让我理解算术运算就足够了。 肯·汤普森 ( Ken Thompson)阅读了这篇文章后,我变得非常好奇。 写一些理解自己的想法似乎令人兴奋。 为什么我提出这个问题,而不是问Google? 我尝试了Google,而Pascal则是第一个链接。 其余的似乎没有相关性,并补充说…我不是一个CS专业(所以我仍然需要了解像yacc所有这些工具),我想通过这样做,我希望有更多经验的人是在这些方面总比Google好。 我想阅读一些与我上面列出的文章相同的文章,但至less强调了构build一个简单的C编译器的引导阶段。 另外,我不知道最好的学习方法。 我是否开始用C语言或其他语言构buildC编译器? 我是否编写C编译器或其他语言? 一旦我有了一些方向去探索,我觉得像这样的问题会得到更好的回答。 有什么build议么? 有什么build议么?

为什么每次运行我的应用程序时都必须使用导出来定义LD_LIBRARY_PATH?

我有一些使用一些共享库的代码(在gcc上的c代码)。 在编译时,我必须使用-I和-L显式地定义include和库目录,因为它们不在标准位置。 当我尝试运行代码时,出现以下错误: ./sync_test ./sync_test: error while loading shared libraries: libsync.so: cannot open shared object file: No such file or directory 但是,请执行以下操作,一切正常: export LD_LIBRARY_PATH="/path/to/library/" ./sync_test 现在奇怪的是,这只能工作一次。 如果我再次尝试运行sync_test,则会得到相同的错误,除非先运行导出命令。 我尝试添加以下内容到我的.bashrc,但没有任何区别: LD_LIBRARY_PATH="/path/to/library/"

等待池线程完成

我很抱歉有一个多余的问题。 不过,我发现了很多解决scheme,但没有一个解释得很好。 我希望在这里可以明确说明。 我的C#应用​​程序的主线程产生1..n使用ThreadPool的后台工作人员。 我希望原始的线程locking,直到所有的工人完成。 我特别研究了ManualResetEvent,但是我不清楚它的用途。 在伪: foreach( var o in collection ) { queue new worker(o); } while( workers not completed ) { continue; } 如有需要,我会知道将要排队的工人数量。

什么是创build一个简短的散列最好的方法,类似于小的Url做什么?

我目前正在使用MD5散列,但我想find一些将使用只是[az] [AZ] [0-9]更短的散列。 它只需要大约5-10个字符。 有没有这样的东西呢? 更新: 我喜欢CRC32哈希。 有没有一种干净的方式来计算它在.NET中? UPDATE2: 我使用Joe提供的链接的CRC32function。 如何将uInt转换为上面定义的字符?

可以自动生成默认析构函数作为虚拟析构函数吗?

可以自动生成默认析构函数作为虚拟析构函数吗? 如果我定义一个基类,但没有默认的析构函数,是否有一个默认的虚析构函数自动生成?

C#中的静态构造函数

我想要使​​用像下面这样的静态构造函数: public static DataManager() { LastInfoID = 1; } 并得到这个错误: 静态构造函数不允许访问修饰符 我想知道我的问题是什么。