Questions tagged «c#»

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

3
有什么方法可以使用.NET应用程序使用git?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 如何从GitHub拉(也许也推)一些文件夹? 我的意思是我需要用于.NET的API才能在C#中访问,而不是用于git的GUI。
69 c#  .net  git 

2
如何在HttpRequestMessage上模拟CreateResponse <T>扩展方法
我正在使用ASP.Net MVC 4 RC的ApiController,并且正在尝试对GET方法进行单元测试。 此方法使用上的CreateResponse&lt;T&gt;方法HttpRequestMessage,但我不知道如何模拟此方法或使其正常运行。 该方法的主体包含以下内容: MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType); var response = Request.CreateResponse&lt;SmartBlock&gt;( HttpStatusCode.OK, versionedSmartBlock, header); 在单元测试中,我创建一个空的HttpRequestMessage: CallsController api = new CallsController( managerMock.Object, config, adapterFactoryMock.Object); api.Request = new HttpRequestMessage( HttpMethod.Get, "http://localhost/Initiate?ern=%2B44123456789"); var response = api.Get("+44123456789", null); 但这只会生成一个InvalidOperationException: 该请求没有关联的配置对象,或者提供的配置为空。 有没有人知道如何配置,HttpRequestMessage以便该CreateResponse方法真正发挥作用?

11
.NET相当于旧的vb left(string,length)函数
作为非.NET程序员,我正在寻找与旧版Visual Basic函数等效的.NET left(string, length)。这很懒,因为它适用于任何长度的字符串。不出所料,left("foobar", 3) = "foo"最有帮助的是left("f", 3) = "f"。 在.NET中string.Substring(index, length),所有超出范围的东西都会抛出异常。在Java中,我总是很方便地使用Apache-Commons lang.StringUtils。在Google中,我对字符串函数的搜索并不遥远。 @Noldorin-哇,谢谢您的VB.NET扩展!我的第一次接触,尽管花了我几秒钟的时间在C#中执行相同操作: public static class Utils { public static string Left(this string str, int length) { return str.Substring(0, Math.Min(length, str.Length)); } } 注意静态类和方法以及this关键字。是的,它们的调用非常简单"foobar".Left(3)。另请参见MSDN上的C#扩展。
69 c#  .net  vb.net 

10
可以不处理C#方法的返回值吗?在这个例子中什么是好的做法?
出于好奇...当我们调用返回一些值但不处理/使用它的方法时会发生什么?我们还期望有时返回的值可能会很大。价值何去何从?它甚至被创造吗?如果是,是否会发生任何性能问题或其他问题?(在这种情况下,最佳做法是什么?) 假设我们有执行一些数据库操作(插入,更新)并在DataTable对象中返回一些数据的方法。而且我也知道有时候这个DataTable对象可能真的很大: public static Datatable InsertIntoDB(...) { // executing db command, getting values, creating &amp; returning Datatable object... ... return myDataTable; } 然后,当使用此方法时,将被如下调用: DataTable myDataTable = InsertIntoDB(...); // this Datatable object is handled in some way 但有时只是这样: InsertIntoDB(...); // returned value not handled; Problem??? 我的第一个想法是,它认为系统足够智能,可以看到返回值被忽略并且不会引起任何问题(只需将其释放),但是我想确定一下,并从经验更丰富的人那里听到对它的更详细的解释。这方面比我强。
69 c#  return-value 

10
如何使用Vb.NET或C#终止进程?
Наэтотвопросестьответына堆栈溢出нарусском:УбитьпроцессвC# 我有一种情况,我必须检查用户是否已经打开了Microsoft Word。如果他有,那么我必须终止winword.exe进程并继续执行我的代码。 是否有任何简单的代码可以使用vb.net或c#杀死进程?
69 c#  vb.net  process  kill 

15
C#的局部类设计不好吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我想知道为什么“部分类”概念甚至存在于C#/ VB.NET中。我正在开发一个应用程序,我们正在读一本(实际上非​​常好)与我们在工作中实现的开发平台有关的书。在这本书中,作者提供了围绕平台API的大型代码库/包装器,并解释了他在教授有关平台开发的不同主题时如何开发它。 总之,长话短说-他在各处使用局部类作为伪造C#(IMO)多重继承的方法。为什么他不只是将这些类分成多个类并使用合成,这超出了我的范围。他将拥有3个“部分类”文件来构成他的基类,每个文件带有3-500行代码……并在他的API中多次执行此操作。 您认为这是合理的吗?如果是我,我将遵循SRP并创建多个类来处理所需的不同行为,然后创建一个将这些类的实例作为成员的基类(例如,composition)。为什么MS甚至将部分类放入框架中?他们删除了在C#的每个作用域级别扩展/折叠所有代码的能力(C ++允许这样做),因为显然这只是在允许不良习惯-局部类是IMO。我想我的问题是:您能否向我解释何时有合法理由使用局部类? 编辑:我知道对于Web / WinForms没有其他选择。但是除此之外呢?MS为什么不只是将一些不同的关键字用于将代码生成的类粘合在一起?还是真的有一个值得考虑的合法设计方案? 我的意思不是说这是一条咆哮/战争的话题。老实说,我希望在这里学习一些东西。什么时候应该在代码设计中使用局部类?简单的问题,无需关闭 谢谢
69 c#  .net  vb.net 

3
查询结果不能被多次枚举
我正在使用实体框架(ef),并收到以下错误: “查询结果不能多​​次枚举。” 我有一个包含ef数据上下文的存储库类。然后,我有一个控制器类(不要与MVC控制器混淆),其中包含存储库的实例。到目前为止RadComboBoxItemData一切顺利...我在控制器上有一个搜索方法,该方法应该返回的数组,该数组用于填充Telerik RadComboBox控件。 public RadComboBoxItemData[] Search(int id, string searchText) { var query = context.Search(id, searchText); List&lt;RadComboBoxItemData&gt; result = new List&lt;RadComboBoxItemData&gt;(); foreach (var item in query) { RadComboBoxItemData itemData = new RadComboBoxItemData(); itemData.Text = ""; // assign some text here..; itemData.Value = ""; /*assign some value here..*/ result.Add(itemData); } return …

1
使用C#在ASP.NET MVC 3中创建级联下拉列表的最简单方法
我想使用(最好是)与创建DropDownList一个层叠。MVC3RazorC# 我想有一个下拉菜单,您可以在其中选择年份,而在另一个下拉列表中,可以根据所选年份选择特定的月份集。 让我们简单点。当我在下拉列表“ year”中选择当前年份(即2011)时,下拉列表“ month”将填充直到当前月份(即3月)的月份。对于其他情况(其他年份),则没有限制。此外,最好在选择下拉列表“ year”中的任何元素之前“阻止”下拉列表“ month”。 我已经在Internet上寻找了一些使用jQuery甚至自制方法的解决方案,但是它们都引用了MVC的过去版本,并且中不推荐使用某些命令MVC3。

7
表达式树的实际使用
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 表达式树是一个不错的功能,但是它的实际用途是什么?它们可以用于某种形式的代码生成或元编程吗?

2
为什么具有可为空值的结构的HashSets会异常慢?
我调查了性能下降,并将其跟踪到缓慢的HashSet。 我有带有可为空值的结构,用作主键。例如: public struct NullableLongWrapper { private readonly long? _value; public NullableLongWrapper(long? value) { _value = value; } } 我注意到创建A的HashSet&lt;NullableLongWrapper&gt;过程非常缓慢。 这是使用BenchmarkDotNet的示例:(Install-Package BenchmarkDotNet) using System.Collections.Generic; using System.Linq; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Running; public class Program { static void Main() { BenchmarkRunner.Run&lt;HashSets&gt;(); } } public class Config : ManualConfig …
69 c#  .net  performance  struct 

3
当最后一个条件调用有条件时,为什么C#编译器会删除方法调用链?
考虑以下类别: public class A { public B GetB() { Console.WriteLine("GetB"); return new B(); } } public class B { [System.Diagnostics.Conditional("DEBUG")] public void Hello() { Console.WriteLine("Hello"); } } 现在,如果我们以这种方式调用方法: var a = new A(); var b = a.GetB(); b.Hello(); 在发布版本中(即,无DEBUG标志),我们只会看到GetB控制台上打印的内容,因为Hello()编译器会省略对的调用。在调试版本中,两个打印都会出现。 现在让我们链接方法调用: a.GetB().Hello(); 调试版本中的行为不变。但是,如果未设置标志,则会得到不同的结果:两个调用都被省略,并且控制台上没有打印内容。快速浏览一下IL会发现整个行没有被编译。 根据针对C#的最新ECMA标准(ECMA-334,即C#5.0),Conditional属性置于方法上如下(强调我的意思): 如果在调用点定义了一个或多个与其相关的条件编译符号,则包括对条件方法的调用,否则将省略该调用。(第22.5.3节) 这似乎并不表示应忽略整个链条,因此是我的问题。话虽如此,Microsoft的C#6.0规范草案提供了更多细节: 如果定义了该符号,则包括该呼叫;否则,将忽略该呼叫(包括对接收方的评估和该呼叫的参数)。 没有对调用的参数进行评估的事实有据可查,因为这是人们#if在功能体内使用此功能而不是使用伪指令的原因之一。但是,有关“接收者评估”的部分是新的-我似乎无法在其他地方找到它,并且确实可以解释上述行为。 有鉴于此,我的问题是:在这种情况下,C#编译器不进行评估的原理 是什么a.GetB() ?根据条件调用的接收者是否存储在临时变量中,它的行为是否真的有所不同?

10
是否可以像WebView一样将Gecko或Webkit嵌入Windows窗体中?
我很想知道是否有Gecko.NET之类的东西;)我的意思是,就像我们可以嵌入WebView一样,这就是IE7在所有Windows Forms应用程序中的“实例”(并告诉它 navigateto(fancy_url);)。我很想使用Firefox或WebKit。 有人尝试过吗? 更新:请记住,尽管可以使用上述控件嵌入壁虎,但仍然无法打印在使用Gecko时。 2010年3月更新:仍然无法使用GeckoFX进行本机打印,但是根据您要尝试执行的操作,存在两种方法可能就足够了。请参阅:http : //geckofx.org/viewtopic.php?id=796更多信息,。 2013年10月更新:我不再从事Windows开发,因此对此我没有兴趣,但是似乎可以在以下位置找到Gecko的开发:https : //bitbucket.org/geckofx,并且它似乎是最近更新的。留给以后的Windows开发人员使用;) 2017年1月更新:我收到了一家名为TeamDev。他们创建了一个基于Chromium的.NET浏览器组件,称为“ DotNetBrowser”,该组件可用于在Windows Forms应用程序中显示现代网页。 直接引用电子邮件: 以下是有关组件的一些详细信息,可能会有所帮助: DotNetBrowser基于Chromium,因此支持HTML5,CSS3,JS和最新的Web标准。库的基础Chromium版本会定期更新。 该组件适用于WPF和Windows Forms桌面应用程序,并且适用于C#和VB.NET。 该图书馆已获得商业许可,但是为开源和学术项目提供了免费许可。 免责声明: 我没有使用过此DotNetBrowser,因为我不再进行Windows开发,但是如果您正在寻找解决方案,可能值得检查。
69 c#  .net  winforms  webkit  gecko 

6
为什么C#在两种int数组语法上的行为不同
C#中的数组在引用类型上隐式为协变的: object[] listString = new string[] { "string1", "string2" }; 但不是值类型,因此如果更改string为int,将得到编译错误: object[] listInt = new int[] {0, 1}; // compile error 现在,您需要担心的是,当您int像以下两种语法那样声明数组时,它们下面没有显式声明类型int,仅在上进行区分new[],编译器将以不同的方式对待: object[] list1 = { 0, 1 }; //compile successfully object[] list2 = new[] {0, 1}; //compile error 您将object[] list1 = { 0, 1 };成功编译,但是object[] list2= new[] {0, 1};编译错误。 …
69 c#  arrays 


2
无法将PLAINTEXT签名与DotNetOpenAuth ServiceProvider一起使用
我正在OAuth 1.0(a)使用DotNetOpenAuth(NuGet package DotNetOpenAuth.OAuth.ServiceProvider, version = 4.1.4.12333)构建授权服务器。该服务器托管在ASP.NET应用程序中,但这与问题无关。 我ServiceProvider的配置如下: private ServiceProvider GetServiceProvider() { var baseUri = "http://myauth.com"; return new ServiceProvider( new ServiceProviderDescription { UserAuthorizationEndpoint = new MessageReceivingEndpoint( new Uri(baseUri + "/get_request_token"), HttpDeliveryMethods.GetRequest ), RequestTokenEndpoint = new MessageReceivingEndpoint( new Uri(baseUri + "/authorize"), HttpDeliveryMethods.PostRequest ), AccessTokenEndpoint = new MessageReceivingEndpoint( new Uri(baseUri + "/get_token"), …

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.