Questions tagged «c#»

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

5
C#将List <string>转换为Dictionary <string,string>
这似乎是一件很奇怪的事情,但是忽略了这一点,是否有一种将List转换为Dictionary的简洁方法,其中Dictionary中的每个键值对都只是List中的每个字符串。即 List = string1, string2, string3 Dictionary = string1/string1, string2/string2, string3/string3 我已经做了很多搜索,而实际上在Stackoverflow上有数十个示例,它们以相反的方向进行操作,但并非以这种方式进行。 这样做的原因是我有两个第三部分组件,而更改它们是我无法控制的。一个以列表的形式返回电子邮件地址列表,另一个以To参数为Dictionary的形式发送电子邮件。字典的关键字是电子邮件地址,值是他们的真实姓名。但是,我不知道真实姓名,但是如果您也将真实姓名设置为电子邮件地址,它仍然可以使用。因此,为什么要将列表转换为字典。有很多方法可以做到这一点。列表上的foreach循环将kvp添加到字典中。但是我喜欢简洁的代码,想知道是否有单行解决方案。
117 c#  list  dictionary 

16
接口和类之间的区别是什么?为什么可以在类中直接实现方法,为什么要使用接口?
我知道这是一个非常基本的问题,但是一个面试官以非常棘手的方式问我,我很无助:( 我只知道接口的材料或理论定义,并且在我从事的许多项目中也都实现了它。但是我真的不明白为什么这样做有用。 我也不了解界面中的一件事。即例如,我们使用 conn.Dispose();在最后块。但是我看不到该类正在实现或继承IDisposableinterface(SqlConnection)类。我想知道如何才能调用方法名称。同样,我也不了解Dispose方法的工作原理,因为我们需要为所有接口方法使用自己的实现来实现函数体。那么接口如何被接受或命名为合同呢?直到现在,这些问题一直在我脑海中浮现,坦率地说,我从未见过任何好的线索可以用我能理解的方式解释我的问题。 像往常一样,MSDN看起来非常可怕,而且没有清晰的界线(伙计们,请高水平开发的人为借口,我强烈认为任何代码或文章都应该引起任何人的注意,因此,就像许多其他人所说的那样,MSDN没用)。 面试官说: 他有5种方法,并且很乐意直接在类中实现它,但是如果您必须使用Abstract类或接口,则选择哪种方法,为什么?我确实回答了我在各种博客中读到的所有内容,并说了抽象类和接口的优缺点,但是他不相信,他是在总体上试图理解“为什么使用接口”。即使我只能一次实现相同的方法,也不能改变它,但一般来说,“为什么抽象类”还是如此。 我在网络上看不到任何地方,我可以得到一篇文章来清楚地向我解释接口及其功能。我是众多程序员之一,他们仍然不了解接口(我知道我使用的理论和方法),但不满意我清楚地了解它。
117 c#  class  oop  interface  abstraction 

6
从JToken获取可能不存在的价值(最佳做法)
使用Json.NET检索C#中甚至可能不存在的JSON值的最佳实践是什么? 现在,我正在处理一个JSON提供程序,该提供程序返回的JSON有时包含某些键/值对,有时不包含。我一直在使用(可能不正确)此方法来获取我的值(例如获取双精度值的示例): if(null != jToken["width"]) width = double.Parse(jToken["width"].ToString()); else width = 100; 现在可以正常工作,但是当它们很多时很麻烦。我最终写了一个扩展方法,只有在写完它之后,我才想知道我是否是愚蠢的……无论如何,这是扩展方法(我只包含双精度和字符串的情况,但实际上我有很多更多): public static T GetValue&lt;T&gt;(this JToken jToken, string key, T defaultValue = default(T)) { T returnValue = defaultValue; if (jToken[key] != null) { object data = null; string sData = jToken[key].ToString(); Type type = typeof(T); if (type is …
117 c#  json.net 

8
索引(从零开始)必须大于或等于零
嘿,我不断出现错误: 索引(从零开始)必须大于或等于零且小于参数列表的大小。 我的代码: OdbcCommand cmd = new OdbcCommand("SELECT FirstName, SecondName, Aboutme FROM User WHERE UserID=1", cn); OdbcDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Name.Text = String.Format("{0} {1}", reader.GetString(0), reader.GetString(1)); Aboutme.Text = String.Format("{2}", reader.GetString(0)); }
117 c#  asp.net  mysql  sql 

8
C#类命名约定:是BaseClass还是ClassBase或AbstractClass
建议的命名基类的方法是什么?它是在类型名称前面加上“ Base ”还是“ Abstract ”,还是只是在其后缀“ Base”? 考虑以下: 类型:ViewModel例如MainViewModel,ReportViewModel 基类:BaseViewModel或ViewModelBase或AbstractViewModel 同时考虑: 类型:Product例如VirtualProduct,ExpiringProduct 基类:BaseProduct或ProductBase或AbstractProduct 您认为哪个更标准? class Entity : EntityBase { } 要么 class Entity : BaseEntity { }


2
等待与task.Result相同的已完成任务?
我目前正在阅读Stephen Cleary撰写的“ C#Cookbook中的并发性 ”,并且注意到以下技术: var completedTask = await Task.WhenAny(downloadTask, timeoutTask); if (completedTask == timeoutTask) return null; return await downloadTask; downloadTask是对的调用httpclient.GetStringAsync,timeoutTask正在执行Task.Delay。 如果它没有超时,则downloadTask已经完成。downloadTask.Result考虑到任务已经完成,为什么需要第二次等待而不是返回?


4
C#中的Select和ConvertAll之间的区别
我有一些清单: List&lt;int&gt; list = new List&lt;int&gt; { 1, 2, 3, 4, 5 }; 我想对列表元素进行一些转换。我可以通过两种方式做到这一点: List&lt;int&gt; list1 = list.Select(x =&gt; 2 * x).ToList(); List&lt;int&gt; list2 = list.ConvertAll(x =&gt; 2 * x).ToList(); 这两种方式有什么区别?
117 c#  .net  list 

3
检查给定的类型是否为枚举
我正在为Json.NET写一个JsonConverter,它应该允许我将任何枚举转换为[Description]属性定义的字符串值。 例如: public enum MyEnum { [Description("Sunday")] Sunday, [Description("Monday")] Monday, [Description("Tuesday")] Tuesday, [Description("Wednesday")] Wednesday, [Description("Thursday")] Thursday, [Description("Friday")] Friday, [Description("Saturday")] Saturday } 我已经有了支持的代码,myEnum.Description()显然它将返回其字符串描述。 在JsonConverter实现中,有以下方法: public override bool CanConvert(Type objectType) { } 我试图弄清楚如何确定是否objectType为an Enum并返回true,以便转换器知道它可以转换此对象。由于我有很多Enum,所以我无法明确检查每个对象,因此我希望找到一种更通用的方法来完成此操作。
117 c#  enums 

10
在C#中获取鼠标位置
如何获得鼠标位置?我想要屏幕位置。 我启动要设置为当前鼠标位置的程序。 Location.X = ?? Location.Y = ?? 编辑:这必须在创建表单之前发生。
117 c#  mouse-position 

10
如何在ASP.NET Core中使用npm
我正在使用npm管理ASP.NET Core应用程序所需的jQuery,Bootstrap,Font Awesome和类似的客户端库。 对我有用的方法是将package.json文件添加到项目中,如下所示: { "version": "1.0.0", "name": "myapp", "private": true, "devDependencies": { }, "dependencies": { "bootstrap": "^3.3.6", "font-awesome": "^4.6.1", "jquery": "^2.2.3" } } npm将这些软件包还原到node_modules文件夹中,该文件夹与项目目录中的wwwroot处于同一级别: 由于ASP.NET Core从wwwroot文件夹提供静态文件,而node_modules不存在,因此我必须进行一些更改才能使此工作生效,第一个:在Startup中的app.UseStaticFiles之前添加app.UseFileServer。 cs文件: app.UseFileServer(new FileServerOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"node_modules")), RequestPath = new PathString("/node_modules"), EnableDirectoryBrowsing = true }); app.UseStaticFiles(); 第二个,在project.json文件的publishOptions中包括node_modules: "publishOptions": { "include": …

5
如何使用CancellationToken属性?
与前面的RulyCanceler类代码相比,我想使用来运行代码 CancellationTokenSource。 如取消令牌中所述,如何使用它,即不引发/捕捉异常?我可以使用IsCancellationRequested财产吗? 我试图这样使用它: cancelToken.ThrowIfCancellationRequested(); 和 try { new Thread(() =&gt; Work(cancelSource.Token)).Start(); } catch (OperationCanceledException) { Console.WriteLine("Canceled!"); } 但这cancelToken.ThrowIfCancellationRequested();在方法中产生了运行时错误Work(CancellationToken cancelToken): System.OperationCanceledException was unhandled Message=The operation was canceled. Source=mscorlib StackTrace: at System.Threading.CancellationToken.ThrowIfCancellationRequested() at _7CancellationTokens.Token.Work(CancellationToken cancelToken) in C:\xxx\Token.cs:line 33 at _7CancellationTokens.Token.&lt;&gt;c__DisplayClass1.&lt;Main&gt;b__0() in C:\xxx\Token.cs:line 22 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, …

14
如何仅比较EF中DateTime中的日期组件?
我有两个日期值,一个已经存储在数据库中,另一个由用户使用DatePicker选择。用例是从数据库中搜索特定日期。 先前在数据库中输入的值始终具有12:00:00的时间分量,而从选择器输入的日期具有不同的时间分量。 我只对日期部分感兴趣,并且想忽略时间部分。 在C#中进行这种比较的方法是什么? 另外,如何在LINQ中做到这一点? 更新:在LINQ to Entities上,以下工作正常。 e =&gt; DateTime.Compare(e.FirstDate.Value, SecondDate) &gt;= 0

2
在ASP.NET MVC的静态字段内使用Server.MapPath()
我正在建立一个ASP.NET MVC网站,在其中使用Lucene.Net进行搜索查询。我在这里问了一个有关如何在ASP.NET MVC应用程序中正确构造Lucene.Net用法的问题,并被告知最好的方法是将my声明为IndexWriteras public static,以便可以重新使用它。 这是我的SearchController顶部的一些代码: public static string IndexLocation = Server.MapPath("~/lucene"); public static Lucene.Net.Analysis.Standard.StandardAnalyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer(); public static IndexWriter writer = new IndexWriter(IndexLocation,analyzer); 由于writer是静态的,IndexLocation因此也必须是静态的。因此,编译器给我以下错误Server.MapPath(): 非静态字段,方法或属性“ System.Web.Mvc.Controller.Server.get”需要对象引用。 有没有一种方法可以使用Server.MapPath()或类似的静态字段?如何解决此错误?

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.