Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

6
将IsAssignableFrom与“开放”通用类型一起使用
使用反射,我试图找到从给定基类继承的一组类型。不需要很长时间就可以找到简单类型,但是在泛型方面我感到很困惑。 对于这段代码,第一个IsAssignableFrom返回true,但是第二个返回false。但是,最终的任务编译就可以了。 class class1 { } class class2 : class1 { } class generic1<T> { } class generic2<T> : generic1<T> { } class Program { static void Main(string[] args) { Type c1 = typeof(class1); Type c2 = typeof(class2); Console.WriteLine("c1.IsAssignableFrom(c2): {0}", c1.IsAssignableFrom(c2)); Type g1 = typeof(generic1<>); Type g2 = typeof(generic2<>); Console.WriteLine("g1.IsAssignableFrom(g2): …

2
指定值可以是字符串,也可以是带有json模式的null
希望这对其他人来说并不明显,因为我发现http://json-schema.org/上的文档缺少更详细的信息。我正在获取带有一些可以为null或字符串的属性的json块。如何在json模式(由json.NET的JsonSchema.Parse方法解析)中指定值可以为null还是字符串类型? 是否缺少一些简单的东西,例如为该类型提供数组?例如; "member_region": { "type": [ "string", null ] } // this throws an exception 另外,有没有人比json-schema.org有更好的json模式详细信息来源?在哪里可以找到更多示例?我不想阅读大量文档/规范来找到可以在10行示例中轻松演示的内容。
73 c#  .net  json  json.net  jsonschema 

5
Linq排序依据,分组依据和各组排序?
我有一个看起来像这样的对象: public class Student { public string Name { get; set; } public int Grade { get; set; } } 我想创建以下查询:按学生姓名对成绩进行分组,按成绩对每个学生组进行排序,并按每个组中的最高成绩对组进行排序。 因此它将如下所示: A 100 A 80 B 80 B 50 B 40 C 70 C 30 我创建了以下查询: StudentsGrades.GroupBy(student => student.Name) .OrderBy(studentGradesGroup => studentGradesGroup.Max(student => student.Grade)); 但这返回了IEnumerable IGrouping,并且我无法对列表进行排序,除非在另一个foreach查询中执行此操作,然后使用将结果添加到其他列表中AddRange。 有没有更漂亮的方法可以做到这一点?

13
点后仅保留小数点后两位
public void LoadAveragePingTime() { try { PingReply pingReply = pingClass.Send("logon.chronic-domination.com"); double AveragePing = (pingReply.RoundtripTime / 1.75); label4.Text = (AveragePing.ToString() + "ms"); } catch (Exception) { label4.Text = "Server is currently offline."; } } 目前,我的label4.Text get类似于:“ 187.371698712637”。 我需要显示类似“ 187.37”的内容 DOT之后只有两个职位。有人可以帮我吗?
73 c#  ping  decimal-point 

7
为什么我应该在C#中使用int而不是字节或short
我发现了一些有关此问题的话题。即使字节或smallint可以处理数据,除非它是移动应用程序,否则大多数人似乎更喜欢在整个C#代码中使用int。我不明白为什么。将C#数据类型定义为与数据存储解决方案中相同的数据类型是否更有意义? 我的前提:如果我使用类型化的数据集,Linq2SQL类,POCO(一种或另一种),如果我不使我的数据类型在各层之间保持同步,则会遇到编译器数据类型转换问题。我真的不喜欢做System.Convert,只是因为在c#代码中使用int更加容易。我一直使用所需的最小数据类型来处理数据库以及代码中的数据,以保持与数据库的接口整洁。因此,我敢打赌我的C#代码中有75%是使用字节或短整数而不是整数,因为这就是数据库中的内容。 可能性:这是否意味着大多数只将int用于代码中所有内容的人也将int数据类型用于其sql存储数据类型,并且可能不太在乎数据库的整体大小,还是在适用的情况下对代码进行system.convert? 我为什么在乎:我永远都在工作,我只想熟悉最佳实践和标准编码约定。
73 c#  asp.net  sql-server  types 

7
如何将一个类转换为Dictionary <string,string>?
我可以将Class转换为Dictionary &lt;string,string&gt;吗? 在Dictionary中,我希望将类属性作为键,将特定属性的值作为value。 假设我的课是 public class Location { public string city { get; set; } public string state { get; set; } public string country { get; set; } 现在假设我的数据是 city = Delhi state = Delhi country = India 现在您可以轻松理解我的观点了! 我要制作字典!那本字典应该像这样: Dictionary&lt;string,string&gt; dix = new Dictionary&lt;string,string&gt; (); dix.add("property_name", "property_value"); 我可以得到价值!但是,如何获取属性名称(而不是value)? …
73 c#  asp.net  dictionary 

7
ASP.NET自定义验证器客户端和服务器端验证未触发
我以前从未发生过这种情况,但是由于某种原因,客户端和服务器端验证事件均未触发: &lt;asp:TextBox ID="TextBoxDTownCity" runat="server" CssClass="contactfield" /&gt; &lt;asp:CustomValidator ID="CustomValidator2" runat="server" EnableClientScript="true" ErrorMessage="Delivery Town or City required" ClientValidationFunction="TextBoxDTownCityClient" ControlToValidate="TextBoxDTownCity" OnServerValidate="TextBoxDTownCity_Validate" Display="Dynamic" &gt; &lt;/asp:CustomValidator&gt; 服务器端验证事件: protected void TextBoxDTownCity_Validate(object source, ServerValidateEventArgs args) { args.IsValid = false; } 客户端验证事件: function TextBoxDCountyClient(sender, args) { args.IsValid = false; alert("test"); } 我认为至少会启动服务器端验证,但不会。这从来没有发生过。这真的让我感到难过。 我查看了输出,ASP.NET可以识别客户端功能: ASP.NET JavaScript输出: var ctl00_ctl00_content_content_CustomValidator2 = …

10
C#中的Zip文件夹
如何在C#中压缩文件夹的示例(简单代码)是什么? 更新: 我没有看到命名空间ICSharpCode。我下载了,ICSharpCode.SharpZipLib.dll但不知道在哪里复制该DLL文件。我需要做什么才能看到此名称空间? 而且,您是否具有该MSDN示例的compress文件夹的链接,因为我阅读了所有MSDN,但找不到任何内容。 好的,但是我需要下一个信息。 我应该复制ICSharpCode.SharpZipLib.dll到哪里才能在Visual Studio中看到该名称空间?


3
LINQ to SQL Where子句可选条件
我正在使用LINQ to SQL查询,并且遇到了一个问题,其中我有4个可选字段来过滤数据结果。可选地,我的意思是可以选择是否输入值。具体来说,一些文本框可能具有值或具有空字符串,而一些下拉列表可能具有选择值或可能没有值... 例如: using (TagsModelDataContext db = new TagsModelDataContext()) { var query = from tags in db.TagsHeaders where tags.CST.Equals(this.SelectedCust.CustCode.ToUpper()) &amp;&amp; Utility.GetDate(DateTime.Parse(this.txtOrderDateFrom.Text)) &lt;= tags.ORDDTE &amp;&amp; Utility.GetDate(DateTime.Parse(this.txtOrderDateTo.Text)) &gt;= tags.ORDDTE select tags; this.Results = query.ToADOTable(rec =&gt; new object[] { query }); } 现在,我需要添加以下字段/过滤器,但前提是它们由用户提供。 产品编号-来自另一个可以连接到TagHeader的表。 采购订单编号-TagsHeaders表中的一个字段。 订单号-与PO#类似,只是不同的列。 产品状态-如果用户是从下拉菜单中选择的,则需要在此处应用所选的值。 我已经拥有的查询效果很好,但是要完成该功能,需要能够在where子句中添加这4个其他项,只是不知道如何!
72 c#  asp.net  linq  linq-to-sql 

11
如何从列表中快速删除项目
我正在寻找一种快速从C#中删除项目的方法List&lt;T&gt;。该文档指出,List.Remove()和List.RemoveAt()操作都是O(n) 列表删除 List.RemoveAt 这严重影响了我的应用程序。 我写了几种不同的删除方法,并List&lt;String&gt;用500,000个项目对它们全部进行了测试。测试案例如下所示。 总览 我编写了一种方法,该方法将生成一个字符串列表,其中仅包含每个数字(“ 1”,“ 2”,“ 3”,...)的字符串表示形式。然后,我尝试尝试remove列表中的第5个项目。这是用于生成列表的方法: private List&lt;String&gt; GetList(int size) { List&lt;String&gt; myList = new List&lt;String&gt;(); for (int i = 0; i &lt; size; i++) myList.Add(i.ToString()); return myList; } 测试1:RemoveAt() 这是我用来测试RemoveAt()方法的测试。 private void RemoveTest1(ref List&lt;String&gt; list) { for (int i = 0; i &lt; list.Count; i++) …
72 c#  linq  list  collections 


5
如何确定用户帐户是启用还是禁用
我正在整理一个快速的C#win表格应用程序,以帮助解决重复的文书工作。 我在AD中搜索了所有用户帐户,并将它们添加到带有复选框的列表视图中。 我想默认listviewitems的默认检查状态取决于帐户的启用/禁用状态。 string path = "LDAP://dc=example,dc=local"; DirectoryEntry directoryRoot = new DirectoryEntry(path); DirectorySearcher searcher = new DirectorySearcher(directoryRoot, "(&amp;(objectClass=User)(objectCategory=Person))"); SearchResultCollection results = searcher.FindAll(); foreach (SearchResult result in results) { DirectoryEntry de = result.GetDirectoryEntry(); ListViewItem lvi = new ListViewItem( (string)de.Properties["SAMAccountName"][0]); // lvi.Checked = (bool) de.Properties["AccountEnabled"] lvwUsers.Items.Add(lvi); } 我正在努力寻找正确的属性以从DirectoryEntry对象获取帐户状态。我已经搜索了AD用户属性,但没有发现任何有用的东西。 谁能提供任何指针?

8
VS2015:警告MSB3884:找不到规则集文件
将WinForms VS2013项目升级到VS2015后,我开始看到MSB3884“找不到规则集文件”警告。 一次Google搜索显示了一篇MSDN文章,其中有Stack Overflow文章指向以及许多其他站点。 类似的问题:33020507 MSDN:VS2015 MSB3884警告 我同时安装了VS2013和VS2015。 提供警告的项目文件(以及未提供警告的项目)没有这些条目。 &lt;CodeAnalysisRuleSetDirectories&gt; &lt;CodeAnalysisRuleDirectories&gt; 如果我从项目文件中删除其他两个条目,那么问题就消失了,这很明显,因为没有设置规则文件。 &lt;CodeAnalysisIgnoreBuiltInRuleSets&gt; &lt;CodeAnalysisIgnoreBuiltInRules&gt; 我正在尝试使用msbuild从外部进行构建,但是VS2015也倾向于显示该问题。 有趣的是,如果我单击项目属性“代码分析器”区域中的“打开”按钮,则会得到文件。 指定不同的规则集没有区别。这使我认为可能存在环境变量设置,而没有想到任何设置。代码分析器是项目文件的功能。我可以添加目录属性,但共识是要取出路径&lt;CodeAnalysisRule*Directories&gt;。 GUI使用默认值: ' 这是一个典型的项目文件片段。 &lt;PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"&gt; &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt; &lt;OutputPath&gt;bin\x86\Debug\&lt;/OutputPath&gt; &lt;DefineConstants&gt;TRACE;DEBUG&lt;/DefineConstants&gt; &lt;DebugType&gt;full&lt;/DebugType&gt; &lt;PlatformTarget&gt;x86&lt;/PlatformTarget&gt; &lt;CodeAnalysisIgnoreBuiltInRuleSets&gt;true&lt;/CodeAnalysisIgnoreBuiltInRuleSets&gt; &lt;CodeAnalysisIgnoreBuiltInRules&gt;false&lt;/CodeAnalysisIgnoreBuiltInRules&gt; &lt;Prefer32Bit&gt;false&lt;/Prefer32Bit&gt; &lt;TreatWarningsAsErrors&gt;true&lt;/TreatWarningsAsErrors&gt; &lt;CodeAnalysisRuleSet&gt;BasicCorrectnessRules.ruleset&lt;/CodeAnalysisRuleSet&gt; &lt;/PropertyGroup&gt; &lt;PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"&gt; &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt; &lt;OutputPath&gt;bin\x64\Debug\&lt;/OutputPath&gt; &lt;DefineConstants&gt;TRACE;DEBUG&lt;/DefineConstants&gt; &lt;DebugType&gt;full&lt;/DebugType&gt; &lt;PlatformTarget&gt;x64&lt;/PlatformTarget&gt; &lt;CodeAnalysisRuleSet&gt;MinimumRecommendedRules.ruleset&lt;/CodeAnalysisRuleSet&gt; &lt;CodeAnalysisIgnoreBuiltInRules&gt;false&lt;/CodeAnalysisIgnoreBuiltInRules&gt; &lt;/PropertyGroup&gt; 在不从项目文件中删除“代码分析”行的情况下,尽管再次保存项目文件只会将其重新添加,但如何消除/修复警告?

3
如果“实用程序”类是邪恶的,我应将通用代码放在哪里?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过事实和引用回答编辑此帖子。 2年前关闭。 改善这个问题 我通常遵循的规则是,全局变量/函数是邪恶的,并且每段代码都应该存在于它所属的类中。 这是一个非常容易遵循的规则,我相信到目前为止,我从未遇到过与此规则相关的问题。 但是,今天,我需要将一个函数添加到我的程序集中,而不是添加到特定的类。也就是说,几乎所有的类都可以用于此特定功能。 我应该在哪里放置此函数(+1重载)? 如果将其放在“实用程序”类中,我会感到很脏。如果我把它放在半相关的类上,而让其他类直接调用它,我会感到更糟。 这段特定的代码基本上IList&lt;PointF&gt;将a砍成一个规范化的列表。我现在觉得将其作为扩展方法添加IList&lt;PointF&gt;可能是最好的选择...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.