Questions tagged «c#»

C#是Microsoft与.NET平台并行创建的一种多范式,托管的,垃圾回收的面向对象编程语言。

16
团队语言基础混合时,ac#dev是否应切换到VB.net?
我最近加入了一个新的开发团队,该团队在.net平台上混合了语言首选项。 开发1:知道VB.net,不知道C# Dev 2:知道VB.net,不知道c# 开发3:熟悉c#和VB.net,更喜欢c# 开发4:知道c#和VB6(VB.net应该很容易掌握),更喜欢c# 在我看来,.net空间中的思想领袖几乎都是c#开发人员。我还认为某些第三方工具不支持VB.net,但是当我开始研究它时,却没有发现任何好的例子。 我希望整个团队都使用C#,但是如果没有任何理由除优先考虑之外迫使该问题出现,那么我认为这不是正确的选择。 我有什么理由要带领人们远离VB.net?
14 c#  .net  vb.net 

1
为什么有人会使用multipart / form-data进行混合数据和文件传输?
我正在使用C#,正在编写的2个应用程序之间进行一些通信。我开始喜欢Web API和JSON。现在,我正在编写例程以在两个服务器之间发送包含一些文本数据和文件的记录。 根据互联网,我应该使用multipart / form-data请求,如下所示: SO问题“来自C#客户端的多部分表单” 基本上,您手动编写一个遵循如下格式的请求: Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name="field1" Joe Blow --AaB03x content-disposition: form-data; name="pics"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x-- 从RFC 1867复制-HTML中基于表单的文件上传 这种格式对于习惯于使用JSON数据的人来说非常令人不快。因此,很明显,解决方案是创建一个JSON请求,并对文件进行Base64编码,并最终得到如下请求: { "field1":"Joe Blow", "fileImage":"JVBERi0xLjUKJe..." } 我们可以在任何需要的地方使用JSON序列化和反序列化。最重要的是,发送此数据的代码非常简单。您只需为JSON序列化创建类,然后设置属性即可。文件字符串属性的设置很简单: using (FileStream fs = File.Open(file_path, FileMode.Open, FileAccess.Read, FileShare.Read)) { byte[] file_bytes = …

2
创建新的List来修改每个循环中的集合是设计缺陷吗?
我最近Collection was modified在C#中遇到了这个常见的无效操作,尽管我完全理解它,但这似乎是一个常见的问题(谷歌,大约30万个结果!)。但这在您浏览列表时修改列表似乎是合乎逻辑且直接的事情。 List<Book> myBooks = new List<Book>(); public void RemoveAllBooks(){ foreach(Book book in myBooks){ RemoveBook(book); } } RemoveBook(Book book){ if(myBooks.Contains(book)){ myBooks.Remove(book); if(OnBookEvent != null) OnBookEvent(this, new EventArgs("Removed")); } } 有些人会创建另一个列表进行迭代,但这只是在躲避问题。真正的解决方案是什么,或者这里的实际设计问题是什么?我们大家似乎都想这样做,但这是否表明存在设计缺陷?
14 c# 

3
构造和命名包含具有相同名称的通用类的文件的最佳方法是什么?
在我当前的项目中,我遇到了创建具有相同名称但数量不同的泛型参数的泛型类的要求。例如: MyClass<T1> MyClass<T1, T2> MyClass<T1, T2, T3> 考虑到我希望所有这些都在同一个命名空间中,我对如何构造和命名我的类和文件感到困惑。 如果我们遵循这样的想法,即每个文件应该限制一个类,并且文件应采用表示命名空间层次结构的文件夹结构,并且文件名应与该类的名称匹配,那么我该如何处理这种情况? 什么我真的问这里是我应该怎么命名文件包含MyClass<T1>,和我应该怎么命名文件包含MyClass<T1, T2>?我没有问类型参数的名称应该是什么。
14 c#  .net 

4
分配给字符串对象时,为什么要使用string.Empty而不是“”
我一直在代码上运行StyleCop,建议SA1122之一是在为值分配空字符串时使用string.Empty而不是“”。 我的问题是为什么这被认为是最佳做法。或者,这被认为是最佳实践吗?我假设这两个语句之间没有编译器差异,所以我只能认为这是易读性吗? 所以问答 乔恩·斯凯特(Jon Skeet)回答问题
14 c# 

5
如何通过工具支持确保.NET中的单一编码标准
基本情况可能是每个人都熟悉的。您已经在团队中就某些编码标准达成了共识,现在是时候确保每个人都遵循它们了。 有些通过繁重的配对编程来完成,有些则维护编码标准列表并进行手动检查。其他人甚至使用Visual Studio中的静态代码分析工具来确保实施了编码标准。 您有什么最佳实践来确保编码标准?您使用哪些工具-每个开发人员都应该知道一些基本工具吗?您如何将代码的标准化集成到开发工具中?
14 c#  .net  coding-style 

8
一种实用的方法来存储几乎没有变化的“大量”数据?
从预先计算的查找表或其他方面考虑。在什么时候使用数据库而不是对应用程序中的值进行硬编码更有意义?这些值不会改变,并且很好地与维护开发人员隔离开来。100个值,1k,10k,100k?我想存储约40k值。现在,这是机器生成的switch语句(VS2010不满意)。 编辑: 如果有人好奇,这就是我的处理方法:我的数据可存储在两个100k元素的浮点数组中,所以我就是这样做的。大约花了20秒钟来生成数据,因此我做了一次,然后使用BinaryFormatter将其序列化为嵌入式资源。在应用程序启动时,解压缩数据大约需要5毫秒,并且比我正在替换的数据库实现(这些硬编码的值之前存储在其中)的性能要好45,000倍。

6
C#函数参数使用什么命名约定
在某些情况下,在Parameter中传递的名称将被转换为新的类型,但是Passed对象的名称应保持相似。对于类属性,我们可以使用此运算符,但是函数中的局部变量呢?什么编码约定被广泛使用。 例, void MyFunc(BaseClass myPara) { DerivedClass _mypara = (BaseClass)myPara; } 或相反 void MyFunc(BaseClass _myPara) { DerivedClass mypara = (BaseClass)_myPara; } 或其他任何约定
14 c#  naming 

3
如何模拟导致异常的事件来测试try / catch块?
我了解异常如何工作以及如何在C#中捕获和处理异常,但是我如何模拟可能导致异常的事件以确保正确捕获异常?例如,是否可以在一种可以模拟网络问题,数据库问题等的测试平台上运行应用程序?异常的性质似乎很难重现,因此很难确保您的代码可以应对它们。 尽管我主要使用C#/。NET / Visual Studio开发,但是与其他语言有关的答案或资源可能会很有用。
14 c#  testing  exceptions 

4
具有不同输入参数的工人的C#设计模式
我不确定哪种设计模式可以帮助我解决此问题。 我有一个类“ Coordinator”,该类确定应使用哪种Worker类-不必知道那里有所有不同类型的Worker-它仅调用WorkerFactory并根据通用IWorker接口起作用。 然后,它将适当的Worker设置为工作并返回其“ DoWork”方法的结果。 到目前为止还不错。我们对新的Worker类有一个新的要求,即“ WorkerB”,它需要额外的信息量,即额外的输入参数,才能使其工作。 就像我们需要一个带有额外输入参数的DoWork方法重载...但是所有现有的Workers都必须实现该方法-这似乎是错误的,因为这些Workers确实不需要该方法。 我该如何重构,以使协调器不知道正在使用哪个工作人员,并且仍然允许每个工作人员获取完成其工作所需的信息,但没有任何工作人员执行不需要的信息? 已经有很多现有的工人。 我不想更改任何现有的具体Workers来适应新WorkerB类的要求。 我以为Decorator模式在这里会很好,但是我之前没有看到任何Decorator用相同的方法但参数不同来装饰对象... 代码情况: public class Coordinator { public string GetWorkerResult(string workerName, int a, List<int> b, string c) { var workerFactor = new WorkerFactory(); var worker = workerFactor.GetWorker(workerName); if(worker!=null) return worker.DoWork(a, b); else return string.Empty; } } public class WorkerFactory { …

1
C#字典的效率
C#字典是查找某些东西是否存在等的简单方法。但是我对它们的工作方式有疑问。假设不是字典,而是使用ArrayList。我没有使用ContainsKey(或使用另一种语言的等效方法)循环遍历ArrayList来检查那里是否存在某些东西(或者如果对数据进行排序或类似的操作,则执行二进制搜索)。效率有何不同?该ContainsKey方法是否使用某种更有效的方法,而不是遍历键并检查我搜索的内容是否存在? 如果说我创建了一个特定的哈希函数,该哈希函数与我拥有的数据类型相对应,并且是专门针对该数据集而设计的,那么是的,该哈希函数的确比循环遍历数据的速度更快。但是字典是通用的。ContainsKey方法不是特定于它获取的数据,它是一种常规的搜索方法。 基本上我要问的是。词典对程序员很有帮助。它们包括对许多事情有帮助的方法,并且它们将字符串与整数,(键和值)等结合在一起。但是关于效率,他们提供了什么?什么是在具有的差异dictionaryVS一个ArrayList的structs(string,int)

3
何时给定(GWT)和行为安排断言(AAA)之间的区别?
在TDD中,有Arrange Act Assert(AAA)语法: [Test] public void Test_ReturnItemForRefund_ReturnsStockOfBlackSweatersAsTwo_WhenOneInStockAndOneIsReturned() { //Arrange ShopStock shopStock = new ShopStock(); Item blackSweater = new Item("ID: 25"); shopStock.AddStock(blackSweater); int expectedResult = 2; Item blackSweaterToReturn = new Item("ID: 25"); //Act shopStock.ReturnItemForRefund(blackSweaterToReturn); int actualResult = shopStock.GetStock("ID: 25"); //Assert Assert.AreEqual(expectedResult, actualResult); } 在BDD中,编写测试使用类似的结构,但语法为“当下(GWT)”: [Given(@"a customer previously bought a black sweater …
13 c#  unit-testing  tdd  bdd 

5
如何进行一项测试取决于另一项测试的结果?
假设有一个实用程序类,提供了许多其他类在代码中各处使用的一些常见静态方法。 您将如何为实用程序的使用者设计单元测试,以便在任何一项实用程序测试未通过的情况下使他们的测试失败?您可以这样做还是必须自己检查实用程序类测试是否全部为绿色? 例如,我有一个消息拆分器实用程序,它由消息解析器使用(或更确切地说,它的输出)。我想确保在测试邮件解析器之前,邮件拆分器能够正常工作。 我已经为它们两个编写了测试,但是有没有办法链接它们并使一个测试依赖于其他测试的结果? 我找不到适合的标签,但是我使用的是Visual Studio的单元测试引擎。

4
通过这种方式,我编写此代码是可测试的,但是我缺少它吗?
我有一个名为的界面IContext。出于此目的,除了以下内容外,它的作用并不重要: T GetService<T>(); 该方法的作用是查看应用程序的当前DI容器,并尝试解决依赖关系。我认为还算标准。 在我的ASP.NET MVC应用程序中,我的构造函数如下所示。 protected MyControllerBase(IContext ctx) { TheContext = ctx; SomeService = ctx.GetService<ISomeService>(); AnotherService = ctx.GetService<IAnotherService>(); } 因此,我不是在为每个服务的构造函数中添加多个参数(因为这对于扩展应用程序的开发人员来说确实很烦人和耗时),而是使用此方法来获取服务。 现在,感觉不对。但是,我目前在脑海中证明它的方式是这样- 我可以嘲笑它。 我可以。模拟IContext测试控制器并不难。无论如何,我必须: public class MyMockContext : IContext { public T GetService<T>() { if (typeof(T) == typeof(ISomeService)) { // return another mock, or concrete etc etc } // etc …

2
如何有效地计算图形旋转?
我有一个通过字节矩阵(类似位图的矩阵)表示的图形。示例图显示在上Picture 1。 目的是找到给定图形的最佳旋转角度。当图形旋转最佳角度时,与X和Y轴平行并刻有图形的矩形的面积最小。 刻有图形的矩形在图片上显示为浅灰色。在中Picture 2,您可以看到图形的理想旋转方向为顺时针大约30度。 现在,我知道算法如何找到该角度,但是在我看来这是非常低效的。它是这样的: 循环从0到45度的角度。 对于当前角度,为每个图形点计算新的旋转位置 查找包含图形(最小和最大x,y)的矩形的边界,如果到目前为止最匹配,则对其进行注册 下一个角度 这是一种蛮力方法,对于小人物来说效果很好且相当快。但是,我需要处理包含多达1000万点的图形,并且算法变得缓慢。 什么是解决这个问题的好算法?

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.