Questions tagged «.net»

请勿使用有关.NET Core的问题,而应使用[.net-core]。.NET框架是主要为Microsoft Windows操作系统设计的软件框架。它包括基类库,公共语言运行时(通常称为CLR),公共类型系统(通常称为CTS)和动态语言运行时的实现。它支持多种编程语言,包括C#,VB.NET,F#和C ++ / CLI。

8
创建堆栈大小为默认值的50倍的线程有什么危险?
我目前正在开发一个性能非常关键的程序,因此决定探索一条可能有助于减少资源消耗的方法,这是增加工作线程的堆栈大小,以便我可以将要访问的大部分数据float[]移至堆栈(使用stackalloc)。 我已经读到,线程的默认堆栈大小是1 MB,因此,要移动我float[]的所有内存,我必须将堆栈扩展大约50倍(到50 MB〜)。 我了解这通常被认为是“不安全的”并且不建议这样做,但是在将当前代码与此方法进行基准比较之后,我发现处理速度提高了530%!因此,我不能在没有进一步调查的情况下简单地通过该选项,这使我提出了问题。将堆栈增加到如此大的尺寸有什么危险(可能会出问题),我应采取什么预防措施以最小化此类危险? 我的测试代码 public static unsafe void TestMethod1() { float* samples = stackalloc float[12500000]; for (var ii = 0; ii < 12500000; ii++) { samples[ii] = 32768; } } public static void TestMethod2() { var samples = new float[12500000]; for (var i = 0; i < 12500000; …
228 c#  .net  memory  stack-memory 

7
.NET-获取协议,主机和端口
.NET中是否有一种简单的方法可以快速获取当前协议,主机和端口?例如,如果我在以下URL上: http://www.mywebsite.com:80/pages/page1.aspx 我需要退货: http://www.mywebsite.com:80 我知道可以Request.Url.AbsoluteUri用来获取完整的URL,也可以Request.Url.Authority用来获取主机和端口,但是我不确定在不解析URL字符串的情况下获取协议的最佳方法。 有什么建议?
228 .net  asp.net  url  uri  authority 

10
通过反射找到私人领域?
鉴于这个班 class Foo { // Want to find _bar with reflection [SomeAttribute] private string _bar; public string BigBar { get { return this._bar; } } } 我想找到要用属性标记的私人物品_bar。那可能吗? 我已经在寻找属性的属性中做到了这一点,但是从来没有一个私有成员字段。 我需要设置哪些绑定标志才能获取私有字段?

6
.AsNoTracking()有什么区别?
我对.AsNoTracking()扩展名有疑问,因为这都是很新的,也很令人困惑。 我正在为网站使用每个请求的上下文。 我的许多实体都不会更改,因此不需要跟踪,但是在以下情况下,我不确定数据库的内容,甚至不确定在这种情况下是否有所作为。 这个例子是我目前正在做的: context.Set<User>().AsNoTracking() // Step 1) Get user context.Set<User>() // Step 2) Update user 与上面相同,但是.AsNoTracking()从步骤1中删除了: context.Set<User>(); // Step 1) Get user context.Set<User>() // Step 2) Update user 步骤1和2使用相同的上下文,但是发生在不同的时间。我无法解决的是是否有任何区别。由于第2步是更新,因此我猜两者都将两次访问数据库。 谁能告诉我有什么区别?



15
有关.NET中API突破性更改的权威指南
我想收集有关.NET / CLR中API版本的尽可能多的信息,尤其是API更改如何破坏客户端应用程序。首先,让我们定义一些术语: API更改 -类型的公开可见定义的更改,包括其任何公共成员。这包括更改类型和成员名称,更改类型的基本类型,从类型的已实现接口列表中添加/删除接口,添加/删除成员(包括重载),更改成员可见性,重命名方法和类型参数,添加默认值对于方法参数,在类型和成员上添加/删除属性,以及在类型和成员上添加/删除通用类型参数(我错过了什么吗?)。这不包括成员机构的任何更改,也不包括对私人成员的任何更改(即,我们不考虑反思)。 二进制级中断 -一种API更改,导致针对旧版本API编译的客户端程序集可能不会随新版本一起加载。示例:更改方法签名,即使允许以与以前相同的方式调用它(即:void会返回类型/参数默认值重载)。 源代码级中断 -API更改,导致编写的现有代码无法针对旧版本的API进行编译,因此可能无法与新版本一起编译。但是,已编译的客户端程序集仍可以像以前一样工作。示例:添加一个新的重载,这可能导致先前明确的方法调用中的歧义。 源代码级别的静默语义更改 -API更改会导致编写的现有代码可以针对较旧版本的API进行编译,从而通过例如调用其他方法静默更改其语义。但是,该代码应继续编译而不会出现警告/错误,并且以前编译的程序集应像以前一样工作。示例:在现有类上实现新接口,导致在重载解析期间选择了不同的重载。 最终目标是对尽可能多的破坏性的和安静的语义API更改进行分类,并描述破坏的确切效果,以及受破坏影响的语言和不受破坏的语言。进一步扩展后者:尽管某些更改会普遍影响所有语言(例如,向接口添加新成员将破坏该接口在任何语言下的实现),但有些更改需要非常特定的语言语义才能发挥作用。这通常涉及方法重载,并且通常涉及隐式类型转换。即使对于符合CLS的语言(即那些至少符合CLI规范中定义的“ CLS使用者”规则的语言),似乎也没有任何方法可以定义“最小公分母”。如果有人在这里纠正我的错误,我将不胜感激-因此,这将不得不逐语言进行。自然而然,最有趣的是.NET随附的那些:C#,VB和F#。但是其他的也相关,例如IronPython,IronRuby,Delphi Prism等。极端情况越多,就会越有趣-删除成员之类的事情是不言而喻的,但是方法重载,可选/默认参数,lambda类型推断和转换运算符之间的微妙交互可能会令人惊讶有时。 几个例子来启动这个: 添加新方法重载 种类:源代码级中断 受影响的语言:C#,VB,F# 更改前的API: public class Foo { public void Bar(IEnumerable x); } 更改后的API: public class Foo { public void Bar(IEnumerable x); public void Bar(ICloneable x); } 样例客户端代码在更改前起作用,在更改后中断: new Foo().Bar(new int[0]); 添加新的隐式转换运算符重载 种类:源代码级中断。 受影响的语言:C#,VB 不受影响的语言:F# …


21
合并.NET中的两个数组
.NET 2.0中是否有内置函数将两个数组合并为一个数组? 数组都是相同的类型。我是从代码库中广泛使用的函数获取这些数组的,无法修改该函数以其他格式返回数据。 我希望避免编写自己的函数来完成此操作(如果可能)。
225 c#  .net  arrays 

13
DateTime.Now与DateTime.UtcNow
我一直想知道这两个属性的工作原理到底是什么。我知道第二个是通用的,基本上不涉及时区,但是有人可以详细解释它们的工作原理以及在哪种情况下应该使用哪个?


7
使自定义.NET Exception可序列化的正确方法是什么?
更具体地说,当异常包含自定义对象时,自定义对象本身可以序列化也可以不序列化。 举个例子: public class MyException : Exception { private readonly string resourceName; private readonly IList<string> validationErrors; public MyException(string resourceName, IList<string> validationErrors) { this.resourceName = resourceName; this.validationErrors = validationErrors; } public string ResourceName { get { return this.resourceName; } } public IList<string> ValidationErrors { get { return this.validationErrors; } } } …

16
获取给定日期的正确星期数
我在Google上搜索了很多,找到了很多解决方案,但是没有一个给我正确的2012-12-31周数。甚至是MSDN上的示例(链接)失败了。 2012-12-31是星期一,因此应该是第1周,但是我尝试的每种方法都给了我53。这是我尝试过的一些方法: 从MDSN库: DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; Calendar cal = dfi.Calendar; return cal.GetWeekOfYear(date, dfi.CalendarWeekRule, dfi.FirstDayOfWeek); 解决方案2: return new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); 解决方案3: CultureInfo ciCurr = CultureInfo.CurrentCulture; int weekNum = ciCurr.Calendar.GetWeekOfYear(dtPassed, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); return weekNum; 更新资料 当日期为2012-12-31时,以下方法实际上返回1。换句话说,我的问题是我的方法未遵循ISO-8601标准。 // This presumes that weeks start with Monday. // Week 1 is the 1st …
222 c#  asp.net  .net  date 


11
获取当前文件夹路径
我想创建一个转换文件的程序。我希望用户能够将可执行文件放置在任何目录中,并且在执行该程序(双击.exe)时,我希望该程序处理exe文件所在的当前文件夹中的所有文件。程序如何确定当前正在执行的路径? 我尝试过,System.Windows.Forms.Application.StartupPath但这似乎是错误的方式。 有任何想法吗?
222 c#  .net  winforms  path 

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.