Questions tagged «c#»

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

5
获取远程主机的IP地址
在ASP.NET中,有一个System.Web.HttpRequest类,其中包含ServerVariables可以从REMOTE_ADDR属性值提供IP地址的属性。 但是,我找不到从ASP.NET Web API获取远程主机IP地址的类似方法。 如何获得发出请求的远程主机的IP地址?

14
枚举应该以0还是1开头?
想象一下,我定义了以下枚举: public enum Status : byte { Inactive = 1, Active = 2, } 使用枚举的最佳实践是什么?它应该1以上述示例开头还是以0(没有显式值)开头,如下所示: public enum Status : byte { Inactive, Active }
136 c#  .net  enums 

5
VS2015构建失败,并且没有带有Dynamic的错误消息
我正在对返回JSON的代码编写单元测试。它返回的类型是一个匿名类型,所以我认为要验证它的值,我只是将对象转换为a dynamic来进行断言。 但是,当我这样做时,我的构建失败了,但是没有任何错误消息。我能够用一个非常简单的代码在一个新的单元测试项目中重现它: [TestMethod] public void TestMethod1() { var obj = new { someValue = true }; dynamic asDynamic = obj; Assert.IsTrue(asDynamic.someValue); } 有关构建失败的屏幕截图,请参见下文 但是,当我注释断言时,构建成功: 相反,我在LinqPad 5 beta(使用Roslyn编译器)中运行了以下代码,没有任何问题: var obj = new { someValue = true }; dynamic asDynamic = obj; Console.WriteLine((asDynamic.someValue == true).ToString()); 真正 这里发生了什么?由于错误没有显示我不能说,如果我用dynamic,不正确或者如果它不能找到超载使用IsTrue(),因为的dynamic,或者如果这是在编译器中的错误(虽然我很怀疑这个,我没有任何证据表明我的代码有问题)。 关于过载问题,我尝试过,Assert.IsTrue((bool)asDynamic.someValue);但是构建仍然失败,仍然没有错误消息。 根据@RonBeyer的评论,我也尝试了更多如下的转换,但无济于事: dynamic asDynamic …

7
安装在Visual Studio中创建的Windows服务
当我在Visual Studio 2010中创建新的Windows服务时,收到消息,提示您使用InstallUtil和net start来运行该服务。 我尝试了以下步骤: 创建新项目文件->新建->项目-> Windows服务 项目名称:TestService 按原样构建项目(Service1构造函数,OnStart,OnStop) 打开命令提示符,运行“ C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe” TestService.exe 运行net start TestService。 步骤4的输出 运行事务处理的安装。 开始安装的安装阶段。 有关C:\ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ …

9
C#中的GetHashCode准则
我在Essential C#3.0和.NET 3.5书中读到: 即使特定对象的数据发生更改,GetHashCode()在特定对象的整个生命周期内的返回值也应保持恒定(相同的值)。在许多情况下,您应该缓存方法return以强制执行此操作。 这是有效的指南吗? 我在.NET中尝试了几种内置类型,但它们的行为不像这样。
136 c#  .net  hashcode 

7
在“使用”块中,是否在返回或异常时关闭SqlConnection?
第一个问题: 说我有 using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string storedProc = "GetData"; SqlCommand command = new SqlCommand(storedProc, connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID)); return (byte[])command.ExecuteScalar(); } 连接是否关闭?因为从技术上讲,我们永远都无法}像return以前那样走到最后。 第二个问题: 这次我有: try { using (SqlConnection connection = new SqlConnection(connectionString)) { int employeeID = findEmployeeID(); connection.Open(); SqlCommand command = new …
136 c#  using  sqlconnection 

6
如何在Visual Studio 2015中禁用C#6支持?
背景 我们有一个在VS 2015中启用C#6的项目,开发人员有时需要使用不带C#6的VS 2013来打开该项目。 我们无意在此特定解决方案中使用C#6(正如我所希望的那样)。 问题 Visual Studio和ReSharper建议使用有用的C#6语言构造,这些构造会使解决方案在没有C#6支持的早期版本的Visual Studio中无法使用。 我已禁用ReSharper C#6支持,但似乎无法在整个解决方案中禁用/限制C#功能。 题 如何在解决方案中或Visual Studio 2015中将C#限制为C#5功能?

2
这个对象生存期延长关闭是C#编译器错误吗?
我当时回答的问题有关闭的可能(合法)扩展对象的生命周期,当我遇到了一些非常奇怪的代码生成的C#编译器的部分(4.0,如果该事项)。 我能找到的最短的再现是: 创建一个lambda来捕获本地,同时调用包含类型的 静态方法。 将生成的委托引用分配给包含对象的实例字段。 结果:编译器在没有理由的情况下创建了一个引用创建lambda的对象的闭包对象-委托的“内部”目标是静态方法,而lambda-createing对象的实例成员不需要执行委托时(不被)触碰。实际上,编译器的行为就像程序员this无故捕获的一样。 class Foo { private Action _field; public void InstanceMethod() { var capturedVariable = Math.Pow(42, 1); _field = () => StaticMethod(capturedVariable); } private static void StaticMethod(double arg) { } } 从发行版本生成的代码(反编译为“简单” C#)看起来像这样: public void InstanceMethod() { <>c__DisplayClass1 CS$<>8__locals2 = new <>c__DisplayClass1(); CS$<>8__locals2.<>4__this = this; // …

9
HTML的转义文本
如何在C#中转义HTML使用的文本?我想要做 sample="<span>blah<span>" 并有 <span>blah<span> 显示为纯文本而不是仅使用html :(。的标签部分)。
136 c#  html  escaping 

14
如何使用DbContext和SetInitializer解决datetime2超出范围的转换错误?
我正在使用Entity Framework 4.1引入的DbContext和Code First API。 该数据模型使用的基本数据类型,如string和DateTime。在某些情况下[Required],我使用的唯一数据注释是,但这不在任何DateTime属性上。例: public virtual DateTime Start { get; set; } 该的DbContext子类也很简单,看起来像: public class EventsContext : DbContext { public DbSet<Event> Events { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Event>().ToTable("Events"); } } 在初始化设置日期在模型中有意义的值在今年或明年。 但是,当我运行初始化程序时,在以下位置出现此错误context.SaveChanges(): 从datetime2数据类型到datetime数据类型的转换导致值超出范围。该语句已终止。 我根本不明白为什么会这样,因为一切都很简单。我也不确定如何解决它,因为没有edmx文件可以编辑。 有任何想法吗?


6
您可以用代码配置log4net而不使用配置文件吗?
我知道为什么log4net使用app.config文件来设置日志记录-因此您可以轻松更改信息的记录方式,而无需重新编译代码。但就我而言,我不想将app.config文件与可执行文件打包在一起。而且我不想修改我的日志记录设置。 有没有办法让我设置登录代码而不是使用app.config? 这是我的简单配置文件: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\EventLog.txt" /> <appendToFile value="false" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="5" /> <maximumFileSize value="1GB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender"> </appender> …
136 c#  .net  logging  log4net 

9
如果文件夹不存在,如何创建文件和任何文件夹?
想象一下,我希望创建(或覆盖)以下文件: C:\Temp\Bar\Foo\Test.txt 使用File.Create(..)方法可以做到这一点。 但是,如果我没有以下任何一个文件夹(来自上面的示例路径) 温度 酒吧 oo 然后我得到一个DirectoryNotFoundException抛出。 那么.. 给定一个路径,我们如何递归地创建为该路径创建文件..所需的所有文件夹? 如果存在Temp或Bar文件夹,但Foo不...,那么也会创建该文件夹。 为了简单起见,假设没有安全问题-所有权限都很好,等等。
136 c#  .net  file-access 


10
BestPractice-将字符串的第一个字符转换为小写
我想要一种将字符串的第一个字符转换为小写的方法。 我的方法: 1。 public static string ReplaceFirstCharacterToLowerVariant(string name) { return String.Format("{0}{1}", name.First().ToString().ToLowerInvariant(), name.Substring(1)); } 2。 public static IEnumerable<char> FirstLetterToLowerCase(string value) { var firstChar = (byte)value.First(); return string.Format("{0}{1}", (char)(firstChar + 32), value.Substring(1)); } 你会怎么做?
136 c#  .net  string 

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.