Questions tagged «c#»

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

4
为什么在C#中为什么要在ValueTask <T>上使用Task <T>?
Наэтотвопросестьответына 堆栈溢出нарусском:КогдаследуетиспользоватьValueTask &lt;T&gt;? 从C#7.0开始,异步方法可以返回ValueTask &lt;T&gt;。解释说,当我们有一个缓存的结果或通过同步代码模拟异步时,应该使用它。但是,我仍然不明白始终使用ValueTask是什么问题,或者实际上为什么从一开始就没有使用值类型构建async / await。ValueTask何时无法完成这项工作?
168 c#  asynchronous 

5
使用Moq验证特定参数
public void SubmitMessagesToQueue_OneMessage_SubmitSuccessfully() { var messageServiceClientMock = new Mock&lt;IMessageServiceClient&gt;(); var queueableMessage = CreateSingleQueueableMessage(); var message = queueableMessage[0]; var xml = QueueableMessageAsXml(queueableMessage); messageServiceClientMock.Setup(proxy =&gt; proxy.SubmitMessage(xml)).Verifiable(); //messageServiceClientMock.Setup(proxy =&gt; proxy.SubmitMessage(It.IsAny&lt;XmlElement&gt;())).Verifiable(); var serviceProxyFactoryStub = new Mock&lt;IMessageServiceClientFactory&gt;(); serviceProxyFactoryStub.Setup(proxyFactory =&gt; proxyFactory.CreateProxy()).Returns(essageServiceClientMock.Object); var loggerStub = new Mock&lt;ILogger&gt;(); var client = new MessageClient(serviceProxyFactoryStub.Object, loggerStub.Object); client.SubmitMessagesToQueue(new List&lt;IMessageRequestDTO&gt; {message}); //messageServiceClientMock.Verify(proxy …
168 c#  unit-testing  nunit  moq 

7
在.NET Core 3中找不到dotnet ef
我正在关注文档以创建初始迁移。执行时dotnet,我得到了帮助部分,这意味着PATH可以正常工作。 然后,我尝试从控制台窗口的文档中执行以下命令: dotnet ef migrations add InitialCreate 我收到以下错误: Could not execute because the specified command or file was not found. Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET Core program, but dotnet-ef does not exist. * You intended to …

9
无法找到或创建描述<IBCocoaTouchPlatformToolDescription:0x7fa8bad9a6f0>的执行上下文
我正在为iOS开发一个项目,并且正在使用Visual Studios进行编程,它使用Xamarin连接到Mac服务器。我最近尝试向情节提要和其他课程添加更多视图。当我尝试构建代码时,收到此错误。http://pastebin.com/Ub5s89aa这是控制台的输出。http://pastebin.com/fhWDy2cJ 我不知道此错误的含义,当我尝试查找错误的任何部分时,没有任何帮助。我清理了构建的内容并尝试进行重建,并且还关闭了Visual Studios,然后重新打开它以查看是否有帮助,但事实并非如此。有人遇到过这个问题吗?
167 c#  ios  visual-studio  xamarin 

8
如何找到活动的app.config文件的路径?
我正在尝试完成此异常处理程序: if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null) { string pathOfActiveConfigFile = ...? throw new ConfigurationErrorsException( "You either forgot to set the connection string, or " + "you're using a unit test framework that looks for "+ "the config file in strange places, update this file : " + pathOfActiveConfigFile); } 这个问题似乎仅在我使用nUnit时发生。

9
好的还是坏的做法?在getter中初始化对象
似乎我有一个奇怪的习惯……至少根据我的同事说。我们一直在一起做一个小项目。我编写类的方式是(简化示例): [Serializable()] public class Foo { public Foo() { } private Bar _bar; public Bar Bar { get { if (_bar == null) _bar = new Bar(); return _bar; } set { _bar = value; } } } 因此,基本上,我只在调用getter且该字段仍为null时才初始化任何字段。我认为这可以通过不初始化任何地方都没有使用过的属性来减少过载。 ETA:之所以这样做,是因为我的班级有几个属性,这些属性返回另一个班级的实例,而后者又具有包含更多班级的属性,依此类推。当并非总是需要所有顶级类时,调用顶级类的构造函数将随后调用所有这些类的所有构造函数。 除了个人喜好之外,还有其他反对这种做法的反对意见吗? 更新:关于这个问题,我已经考虑了许多不同的观点,我将支持我接受的答案。但是,我现在对这个概念有了更好的理解,我能够决定何时使用它,何时不使用它。 缺点: 线程安全问题 当传递的值为null时,不服从“ setter”请求 微观优化 异常处理应在构造函数中进行 需要在类的代码中检查null 优点: …
167 c#  coding-style  getter 

18
ObservableCollection不会注意到其中的Item发生更改(即使使用INotifyPropertyChanged)
有谁知道为什么此代码不起作用: public class CollectionViewModel : ViewModelBase { public ObservableCollection&lt;EntityViewModel&gt; ContentList { get { return _contentList; } set { _contentList = value; RaisePropertyChanged("ContentList"); //I want to be notified here when something changes..? //debugger doesn't stop here when IsRowChecked is toggled } } } public class EntityViewModel : ViewModelBase { private bool …

9
Visual Studio:ContextSwitch死锁
我收到了我无法解决的错误消息。它源自Visual Studio或调试器。我不确定最终的错误情况是在VS,调试器,我的程序还是数据库中。 这是Windows应用程序。不是网络应用。 VS发出的第一条消息是一个弹出框,上面显示:“没有为任何调用堆栈框架加载任何符号。无法显示源代码。” 单击该按钮后,我得到:“ 检测到ContextSwitchDeadlock ”,以及下面复制的一则长消息。 该错误出现在向下扫描DataTable的循环中。对于每一行,它将表中的键(HIC#)值用作SqlCommand的参数。该命令用于创建返回一行的SqlDataReader。比较数据。如果检测到错误,则将一行添加到第二个DataTable。 该错误似乎与过程运行多长时间(即60秒后)有关,而不是与发现多少错误有关。我不认为这是内存问题。循环内未声明任何变量。唯一创建的对象是SqlDataReaders,它们位于Using结构中。添加System.GC.Collect()无效。 该数据库是同一台便携式计算机上的SqlServer站点。 表单上没有精美的小玩意或小工具。 我不知道此过程中的任何事情与我之前数十次所做的事情有很大不同。我之前已经看过错误,但是从来没有始终如一。 有什么想法吗? 完整错误文本: 60秒钟以来,CLR无法从COM上下文0x1a0b88过渡到COM上下文0x1a0cf8。拥有目标上下文/公寓的线程很可能要么执行非泵送等待,要么处理很长时间运行的操作而不泵送Windows消息。这种情况通常会对性能造成负面影响,甚至可能导致应用程序变得无响应或随着时间的推移不断累积内存使用量。为避免此问题,所有单线程单元(STA)线程都应使用泵送等待原语(例如CoWaitForMultipleHandles),并在长时间运行的操作中定期泵送消息。

4
带out参数的Func <T>
我可以将带有out参数的方法作为Func传递吗? public IList&lt;Foo&gt; FindForBar(string bar, out int count) { } // somewhere else public IList&lt;T&gt; Find(Func&lt;string, int, List&lt;T&gt;&gt; listFunction) { } Func需要一个类型,因此out不能在那里编译,调用listFunction需要一个int,不允许out in。 有没有办法做到这一点?
167 c#  .net  linq  generics  func 

16
ASP.NET Web API中具有多个GET方法的单个控制器
在Web API中,我有一类类似的结构: public class SomeController : ApiController { [WebGet(UriTemplate = "{itemSource}/Items")] public SomeValue GetItems(CustomParam parameter) { ... } [WebGet(UriTemplate = "{itemSource}/Items/{parent}")] public SomeValue GetChildItems(CustomParam parameter, SomeObject parent) { ... } } 由于我们可以映射各个方法,因此在正确的位置获得正确的请求非常简单。对于只有一个GET方法但也有一个Object参数的类似类,我成功使用IActionValueBinder。但是,在上述情况下,出现以下错误: Multiple actions were found that match the request: SomeValue GetItems(CustomParam parameter) on type SomeType SomeValue GetChildItems(CustomParam parameter, SomeObject …

8
有没有办法检查int在C#中是否为合法枚举?
我读了一些SO帖子,似乎缺少了大多数基本操作。 public enum LoggingLevel { Off = 0, Error = 1, Warning = 2, Info = 3, Debug = 4, Trace = 5 }; if (s == "LogLevel") { _log.LogLevel = (LoggingLevel)Convert.ToInt32("78"); _log.LogLevel = (LoggingLevel)Enum.Parse(typeof(LoggingLevel), "78"); _log.WriteDebug(_log.LogLevel.ToString()); } 这不会引起异常,很乐意存储78。有没有办法验证进入枚举的值?
167 c#  enums 

14
foreach与someList.ForEach(){}
显然,有很多方法可以迭代集合。好奇是否存在任何差异,或者为什么要使用一种方法来替代另一种方法。 第一类: List&lt;string&gt; someList = &lt;some way to init&gt; foreach(string s in someList) { &lt;process the string&gt; } 另一种方式: List&lt;string&gt; someList = &lt;some way to init&gt; someList.ForEach(delegate(string s) { &lt;process the string&gt; }); 我想想起来,您将可以指定一个可重用的委托,而不是上面使用的匿名委托...
167 c#  .net  generics  loops  enumeration 


17
http错误503服务不可用。应用程序池在访问网站时停止
关于此的帖子很多,到目前为止,我已经尝试了很多东西。但无济于事。我自己基本上是Winforms开发人员,几天前我的公司开始采取Web措施时就开始从事此Web工作。 我有一个ASP.Net项目,我想将其托管在本地IIS上。在Project properties -&gt; Web设置中,我选择了Use Local IIS Server,并将网址设为localhost/MyApp。我尝试在我的Firefox浏览器上访问它,并收到以下错误消息:HTTP Error 503. The service is unavailable. 以前,我还有很多其他错误,我一一修复了所有错误。但被这一击中。这些是我项目中的设置 将应用程序池设置为ASP.Net v4.0 Classic 应用程序池 Enable 32 bit Application属性为true 应用程序池已启动 将项目构建属性设置Any CPU为目标框架 但我想提一个奇怪的行为。以下是我面临的问题 应用程序池已启动 我尝试访问我的本地网站(通过提供url作为localhost/MyApp) 我收到错误为 HTTP Error 503. The service is unavailable 应用程序池已停止 我已经看到以下链接,并且已经尝试过。对于上述行为,我到达了这里。根据此链接,计算机名称中不应包含.该名称。.我的计算机名称中没有任何名称,但确实有-。我的域名也包含.在其中。而且,由于我的办公室笔记本电脑和我们的TFS设置已绑定到我们的域名和计算机名称,因此我无法更改这些设置。 谁能帮助我了解发生了什么事?请指导我。谢谢。 编辑 我在中有以下代码Global.asax。Application_BeginRequest同一文件中的方法为空。 protected override void Application_Start(object sender, EventArgs e) { …
167 c#  asp.net  iis  iis-7  localhost 

11
ASP.NET Core使用IConfiguration获取Json数组
在appsettings.json中 { "MyArray": [ "str1", "str2", "str3" ] } 在Startup.cs中 public void ConfigureServices(IServiceCollection services) { services.AddSingleton&lt;IConfiguration&gt;(Configuration); } 在HomeController中 public class HomeController : Controller { private readonly IConfiguration _config; public HomeController(IConfiguration config) { this._config = config; } public IActionResult Index() { return Json(_config.GetSection("MyArray")); } } 上面有我的代码,我为null如何获取数组?

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.