Questions tagged «c#»

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

7
如何在C#注释中转义字符?
今天我意识到,我不知道如何在C#注释中转义字符。我想记录一个通用的C#类,但是由于我不知道如何转义<and >字符,所以我无法写一个合适的例子。我必须使用<和>吗?我不喜欢这种情况,因为我想简化实际文档中的注释,因此我不必生成某种代码文档即可阅读示例代码。
112 c# 

3
为什么锁对象必须是静态的?
使用私有静态只读对象进行多线程锁定非常普遍。我了解到,private通过拧紧封装减少了锁定对象的入口,因此可以访问最基本的对象。 但是为什么要静态呢? private static readonly object Locker = new object(); 最后,该字段仅在我的班级中使用,我也可以只使用它: private readonly object Locker = new object(); 任何意见? 更新: 作为示例,我粘贴了此代码(仅作为示例)。我可以在此上使用静态或非静态储物柜,并且两者都可以正常工作。考虑下面的答案,我应该像这样定义我的储物柜?(对不起,下周我要接受采访,需要了解每个细节:) private readonly object Locker = new object(); 这是代码: private int _priceA; private int _priceB; private EventWaitHandle[] _waithandle; private readonly IService _service; //ctor public ModuleAViewModel(IService service) { _service = service; …


11
WPF中的MVVM-如何向ViewModel发出模型更改的警报…还是应该?
我正在阅读一些MVVM文章,主要是this和this。 我的具体问题是:如何将模型更改从模型传递到ViewModel? 在Josh的文章中,我看不到他这样做。ViewModel总是向模型询问属性。在Rachel的示例中,她确实具有模型实现INotifyPropertyChanged,并从模型中引发事件,但是这些事件仅供视图本身使用(有关执行此操作的详细信息,请参阅她的文章/代码)。 我在哪里都看不到模型向ViewModel发出模型属性更改警报的示例。这让我担心也许由于某些原因未完成。 有没有一种模式可以提醒ViewModel模型中的更改? 似乎有必要,因为(1)可以想象每个模型有多个ViewModel,并且(2)即使只有一个ViewModel,对模型的某些操作也可能导致其他属性被更改。 我怀疑可能会有“为什么要这样做?”形式的答案/评论。注释,所以这是我的程序的描述。我是MVVM的新手,所以我的整体设计可能有问题。我将简要描述一下。 我正在编写比“客户”或“产品”类更有趣的东西(至少对我来说!)。我正在编程BlackJack。 我有一个View,它没有任何代码,仅依赖于绑定到ViewModel中的属性和命令(请参阅Josh Smith的文章)。 是好还是坏,我把该模型应该不仅包含类,如态度PlayingCard,Deck但也BlackJackGame认为保持整场比赛的状态类的,知道什么时候该玩家已经破产,经销商有画卡,玩家和发牌人当前的得分是多少(小于21、21,半身等)。 从BlackJackGame我开始,我公开了“ DrawCard”之类的方法,然后想到在绘制卡片时CardScore,IsBust应该更新诸如和的属性,并将这些新值传递给ViewModel。也许那是错误的想法? 可以采取ViewModel调用该DrawCard()方法的态度,因此他应该知道要求更新分数,并确定自己是否破产。意见? 在我的ViewModel中,我有逻辑来获取纸牌的实际图像(基于西服,等级)并将其用于视图。该模型不必为此担心(也许其他ViewModel只会使用数字而不是纸牌图像)。当然,也许有人会告诉我,该模型甚至不应该具有BlackJack游戏的概念,而应该在ViewModel中进行处理?
112 c#  .net  wpf  mvvm 

15
比较两个复杂对象的最佳方法
我有两个复杂的对象,例如Object1和Object2。它们具有大约5个级别的子对象。 我需要最快的方法来说明它们是否相同。 在C#4.0中怎么做?
112 c#  .net 

6
在.NET Core中解析和修改查询字符串
给我一个包含查询字符串的绝对URI。我希望将值安全地附加到查询字符串,并更改现有参数。 我宁愿不要&foo=bar使用或使用正则表达式,URI的转义很棘手。而是我想使用一个内置的机制,我知道它将正确执行此操作并处理转义。 我发现 一个 吨的答案,所有使用HttpUtility。但是,由于这是ASP.NET Core,因此不再有System.Web程序集,因此也就没有了HttpUtility。 针对核心运行时,在ASP.NET Core中执行此操作的合适方法是什么?
112 c#  asp.net  asp.net-core 

15
Visual Studio 2017(.NET Core)中的自动版本控制
我花了大部分时间尝试在.NETCoreApp 1.1(Visual Studio 2017)中找到一种自动递增版本的方法。 我知道AssemblyInfo.cs是在文件夹中动态创建的: obj/Debug/netcoreapp1.1/ 它不接受以下旧方法: [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")] 如果将项目设置为可打包,则可以在其中设置版本,但这似乎用于构建AssemblyInfo.cs文件。 我的问题是,有没有人想出如何控制.NET Core(或相应的.NETStandard)项目中的版本。

9
使用C#将文件上传到FTP
我尝试使用C#将文件上传到FTP服务器。文件已上传,但字节为零。 private void button2_Click(object sender, EventArgs e) { var dirPath = @"C:/Documents and Settings/sander.GD/Bureaublad/test/"; ftp ftpClient = new ftp("ftp://example.com/", "username", "password"); string[] files = Directory.GetFiles(dirPath,"*.*"); var uploadPath = "/httpdocs/album"; foreach (string file in files) { ftpClient.createDirectory("/test"); ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file); } if (string.IsNullOrEmpty(txtnaam.Text)) { MessageBox.Show("Gelieve uw naam in …
112 c#  .net  file-upload  ftp 

4
在xUnit中验证集合大小的惯用方式是什么?
我的测试套件中有一个测试是这样的: [Fact] public void VerifySomeStuff() { var stuffCollection = GetSomeStuff(); Assert.Equal(1, stuffCollection.Count()); } 该测试按我的预期工作,但是当我运行它时,xUnit会显示警告: 警告xUnit2013:请勿使用Assert.Equal()检查集合大小。 但是,警告中没有其他建议,谷歌搜索将我带到xUnit中的源代码以进行验证此警告的测试打印。 如果Assert.Equal()不是验证集合长度的正确方法,那是什么? 需要澄清的是:我意识到我可以“诱骗” xUnit,使其不发出警告,例如提取变量或使用它Assert.True(stuff.Count() == 1)。后者只是骇人听闻的,而前者的感觉就像是如果xUnit例如试图避免的多次迭代IEnumerable<T>,那么这是错误的方法(因为如果遇到问题,我将分别获得编译器的提示)和xUnit本身永远不必对输入进行多次评估(实际上,由于C#函数调用的工作原理,无论变量提取如何,它都将获得相同的输入)。 因此,我不仅对从输出中删除该警告感兴趣。我的问题的答案还解释了为什么该警告首先包含在库中,以及为什么我应该改用任何方法更好。
112 c#  xunit  xunit.net 


14
如何将List <T>初始化为给定的大小(而不是容量)?
.NET提供了一个性能几乎相同的通用列表容器(请参阅阵列性能与列表性能问题)。但是,它们在初始化方面有很大的不同。 数组很容易使用默认值初始化,并且根据定义,它们已经具有一定的大小: string[] Ar = new string[10]; 这样可以安全地分配随机项目,例如: Ar[5]="hello"; 与列表相比,事情更加棘手。我可以看到执行相同初始化的两种方法,这两种都不是您所说的优雅: List&lt;string&gt; L = new List&lt;string&gt;(10); for (int i=0;i&lt;10;i++) L.Add(null); 要么 string[] Ar = new string[10]; List&lt;string&gt; L = new List&lt;string&gt;(Ar); 什么是更清洁的方式? 编辑:到目前为止的答案涉及容量,这是除预填充列表以外的其他功能。例如,在刚创建的容量为10的列表上,一个不能执行L[2]="somevalue" 编辑2:人们想知道为什么我要以这种方式使用列表,因为这不是他们打算使用的方式。我可以看到两个原因: 令人信服的是,列表是“下一代”数组,几乎没有损失,却增加了灵活性。因此,默认情况下应使用它们。我指出,它们可能不那么容易初始化。 我目前正在编写的是一个基类,该基类在更大的框架中提供了默认功能。在我提供的默认功能中,列表的大小是高级已知的,因此我可以使用数组。但是,我想为任何基类提供动态扩展它的机会,因此我选择了一个列表。

13
如何获得运行过程的完整路径?
我有一个正在更改其他应用程序某些设置的应用程序(这是一个通过双击运行的简单C#应用程序(无需安装))。 更改设置后,我需要重新启动其他应用程序,以便它反映更改后的设置。 这样做,我必须终止正在运行的进程并重新启动该进程,但是问题是在终止后我找不到该进程。(原因是系统不知道exe文件在哪里。) 有什么办法找出正在运行的进程或exe的路径(如果正在运行)? 我不想手动给定路径,即如果它正在运行,请获取路径,终止该过程,然后再重新开始....我稍后会处理
112 c# 

7
您的项目未引用“ .NETFramework,Version = v4.6.2”框架。在“ TargetFrameworks”中添加对“ .NETFramework,Version = v4.6.2”的引用
我无法运行单元测试。 我有下一个错误: 您的项目没有引用“ .NETFramework,Version = v4.6.2”框架。在项目文件的“ TargetFrameworks”属性中添加对“ .NETFramework,Version = v4.6.2”的引用,然后重新运行NuGet恢复。 在app.config: &lt;startup&gt; &lt;supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/&gt; &lt;/startup&gt; 在项目&gt;属性&gt;应用程序&gt; TargetFramework(.NET Framework 4.6.2)中 我该如何解决?

19
找不到testhost.dll。请发布您的测试项目,然后重试
我有一个具有单个XUnit测试方法的简单dotnet核心类库: TestLib.csproj: &lt;Project Sdk="Microsoft.NET.Sdk"&gt; &lt;PropertyGroup&gt; &lt;TargetFramework&gt;netstandard2.0&lt;/TargetFramework&gt; &lt;/PropertyGroup&gt; &lt;ItemGroup&gt; &lt;PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" /&gt; &lt;PackageReference Include="xunit" Version="2.4.1" /&gt; &lt;PackageReference Include="xunit.runner.console" Version="2.4.1"&gt; &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers&lt;/IncludeAssets&gt; &lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; &lt;PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"&gt; &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers&lt;/IncludeAssets&gt; &lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt; &lt;/PackageReference&gt; &lt;PackageReference Include="xunit.runners" Version="2.0.0" /&gt; &lt;/ItemGroup&gt; &lt;/Project&gt; BasicTest.cs: using Xunit; namespace TestLib { public class …

20
在C#中比较对象属性
已关闭。这个问题是基于观点的。它当前不接受答案。 2年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 这是我在许多其他类继承的类上作为方法提出的。这个想法是它允许在相同类型的对象的属性之间进行简单的比较。 现在,它确实可以工作-但是为了提高代码质量,我认为应该将其丢弃以进行检查。怎么会更好/更高效/等等? /// &lt;summary&gt; /// Compare property values (as strings) /// &lt;/summary&gt; /// &lt;param name="obj"&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public bool PropertiesEqual(object comparisonObject) { Type sourceType = this.GetType(); Type destinationType = comparisonObject.GetType(); if (sourceType == destinationType) { PropertyInfo[] sourceProperties = sourceType.GetProperties(); foreach (PropertyInfo pi in sourceProperties) { if ((sourceType.GetProperty(pi.Name).GetValue(this, …

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.