小编Ahm*_*eed的帖子

列出<T> OrderBy字母顺序

我在Framework 3.5上使用C#.我正在寻找快速排序Generic List<T>.为了这个例子,假设我有Person一个属性列表,其属性为lastname.如何使用lambda表达式对此List进行排序?

List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Run Code Online (Sandbox Code Playgroud)

c# sorting generics lambda list

429
推荐指数
8
解决办法
65万
查看次数

为什么HashSet <Point>比HashSet <string>慢得多?

我想存储一些像素位置而不允许重复,所以首先想到的是HashSet<Point>或类似的类.然而,与类似的情况相比,这似乎非常缓慢HashSet<string>.

例如,这段代码:

HashSet<Point> points = new HashSet<Point>();
using (Bitmap img = new Bitmap(1000, 1000))
{
    for (int x = 0; x < img.Width; x++)
    {
        for (int y = 0; y < img.Height; y++)
        {
            points.Add(new Point(x, y));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

大约需要22.5秒.

虽然以下代码(由于显而易见的原因不是一个好的选择)只需1.6秒:

HashSet<string> points = new HashSet<string>();
using (Bitmap img = new Bitmap(1000, 1000))
{
    for (int x = 0; x < img.Width; x++)
    {
        for (int y = 0; y < img.Height; …
Run Code Online (Sandbox Code Playgroud)

.net c# collections performance hashset

163
推荐指数
2
解决办法
9239
查看次数

格式TimeSpan大于24小时

假设我将一些秒转换为TimeSpan对象,如下所示:

Dim sec = 1254234568
Dim t As TimeSpan = TimeSpan.FromSeconds(sec)
Run Code Online (Sandbox Code Playgroud)

如何将TimeSpan对象格式化为如下格式:

>105hr 56mn 47sec
Run Code Online (Sandbox Code Playgroud)

是否有内置函数或我是否需要编写自定义函数?

c# vb.net formatting timespan

34
推荐指数
2
解决办法
3万
查看次数

System.Drawing - 在透明像素上使用DrawString进行错误的文本渲染

将文本渲染到位图时,我发现当在具有非不透明alpha的区域上渲染时,文本看起来非常糟糕.随着基础像素变得更加透明,问题逐渐恶化.如果我不得不猜测我会说当底层像素是透明的时,文本渲染器将任何消除锯齿的"灰色"像素绘制为纯黑色.

以下是一些截图:

在透明像素上绘制的文字:

替代文字

在半透明像素上绘制的文字:

替代文字

在不透明像素上绘制的文字:

替代文字

以下是用于呈现文本的代码:

g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawString("Press the spacebar", Font, Brushes.Black, textLeft, textTop);
Run Code Online (Sandbox Code Playgroud)

c# system.drawing gdi+ drawstring winforms

30
推荐指数
3
解决办法
2万
查看次数

在 VS Code 中选择引号之间的所有文本?

我最近不得不重新安装 VS Code,我记得使用 Ctrl+W 来智能选择引号之间的所有内容,但现在该命令的作用是将我移动到另一个文件/选项卡?有没有办法在 VS Code 中执行此操作,Ctrl+W 对我来说非常简单,确实有助于删除或复制文本字符串。

ide visual-studio-code

28
推荐指数
4
解决办法
3万
查看次数

为什么我不能将'as'用于限制为接口的泛型类型参数?

在下面的示例中(仅用于演示目的),如果T不受类约束,则此转换:

var ret = objectA as T;
Run Code Online (Sandbox Code Playgroud)

..会导致以下编译错误:

类型参数"T"不能与"as"运算符一起使用,因为它没有类类型约束或"类"约束.

我不明白为什么我不能这样做.由于我已经限制T为接口IObject,编译器应该知道T必须是接口类型并且as操作应该是有效的.

public interface IObject
{
    string Id { get; set; }
}
public class ObjectA : IObject
{
    public string Id { get; set; }
}
public class ObjectFactory
{
    public T CreateObject<T>(string id) where T : IObject
    {
        ObjectA objectA = new ObjectA();
        var x = objectA as IObject; // this is good
        var ret = objectA as T; // …
Run Code Online (Sandbox Code Playgroud)

c# generics type-parameter

22
推荐指数
1
解决办法
1496
查看次数

无法找到Microsoft.Office.Interop.Excel参考

我在为项目添加excel引用时遇到了麻烦.我已经安装了Primary Interop Assemblies.

该项目正确检测Microsoft.Office.Interop.Word程序集引用,但仍无法找到excel引用.

当我尝试手动添加引用时,我右键单击该项目,添加引用,导航到Microsoft.Office.Interop.Excel文件并尝试手动添加它.一旦我选择参考我然后确保检查参考,然后点击确定.没有任何反应,它无法实际添加项目的引用路径.

使用VS2012旗舰版.

有关如何让项目看到excel参考的任何建议?

.net c# excel reference

13
推荐指数
3
解决办法
4万
查看次数

如何在进程等待完成时显示加载控件?

我决定使用这个第三方组件在我的Windows窗体中进行简单的加载控制.

http://www.codeproject.com/Articles/14841/How-to-write-a-loading-circle-animation-in-NET

打开和关闭时,这在单个请求中将属性"Active"更改为true或false(每次一个)时工作正常.问题是当进程等待服务时,我假装在进程启动之前激活loadingControl,当我"认为"该进程必须完成时关闭.当我这样做时,图像加载显示为静态图像.(没有动画).

对不起这个问题,我是C#的新手.但我认为我需要使用Threads或类似的东西.

所以我的一般代码是这样的:

using [libraries here]...;
namespace [namespace here]
{
    Public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.loadingCircle1.Visible = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(showLoading));
            this.loadingCircle1.Visible = true;
            t.Start();

            //Import an Excel

            t.Abort();
        }

        public void showLoading()
        {
            loadingCircle1.Active = true;
            loadingCircle1.RotationSpeed = 10;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但始终加载显示为没有动画的静态图像.

.net c# loading winforms

12
推荐指数
2
解决办法
4万
查看次数

使用数字分组格式化十进制数并限制位数

基本上我试图以与Windows计算器完全相同的方式执行数字格式化.因此,我的要求是:

  • 将显示的位数限制为最大值(例如16).我能够实现这一目标number.ToString("G16").
  • 在数字上添加数字分组.我能够用以下方法完成:number.ToString(String.Format("#,0.{0};-#,0.{0}", New String("#"c, 15)))

有关如何将这些组合在一起以获得与Windows计算器相同的行为的任何想法?


一些具有所需输出的示例:

例子


我在下面添加了一个答案,如果使用一个字符串格式化无法实现所需的输出,我将使用该答案.如果您认为没有直接的方法来实现这一点(这是我原来的要求),请随意建议对该答案进行任何优化/更改

对不起,如果我对任何人造成某种混淆.我只是认为可能有一个简单的字符串格式来实现这一点,而且我仍然很想知道这是不是真的.

c# vb.net string-formatting

9
推荐指数
1
解决办法
924
查看次数

对于第一个请求,IIS Express localhost加载速度非常慢

请在下面查看我在尝试重复之前尝试过的事项列表.


问题:

  • 我创建了一个全新的ASP.NET MVC应用程序,我构建应用程序并运行它 - >页面需要20-30秒才能加载.
  • 每次我重建应用程序然后尝试加载页面时,即使我在上一次构建之后立即执行此操作也需要20-30秒(即,不是空闲超时问题,我猜?).

从昨天开始,我一直在努力解决这个问题,我读了所有关于此事的文章/文章,没有运气.虽然,我不得不承认我是ASP.NET和Web开发的新手,并且不熟悉IIS配置,所以我可能会错过一些东西.

我试过的东西:

  • 禁用防病毒和防火墙.

  • 通过注释::1 localhosthosts文件中的行来禁用IPv6 .我的hosts文件如下所示:

    127.0.0.1       localhost
    # ::1             localhost
    
    Run Code Online (Sandbox Code Playgroud)
  • 试过不同的浏览器.

  • 更改了应用程序URL的端口.

  • 将应用程序URL更改为localhost:port,127.0.0.1:port但是当我这样做时,我得到:

    错误请求 - 无效的主机名

  • 卸载并重新安装IIS Express(尝试了多个版本:7.5,8.0和10.0).

  • 尝试安装"应用程序开发功能"下Internet Information Services\World Wide Web Services.

  • 启动VS安装程序并运行修复.

环境信息:

  • Windows 7 x64.
  • Visual Studio 2015.
  • .NET 4.5.2.
  • IIS当前启用的功能:我正在使用IIS Express,所以我不确定这是否相关.

IIS启用的功能

知道什么可能导致这个问题吗?


更新:

我刚尝试使用Jexus Manager.从此处显示的.sln文件加载配置,启动网站并尝试以下方案:

  • 重新启动后浏览网站(Jexus Manager中的两个操作) - > 15-20秒.
  • 在VS中重建解决方案后浏览网站(使用Jexus) - > 30+秒.

asp.net iis asp.net-mvc iis-express visual-studio-2015

9
推荐指数
1
解决办法
1693
查看次数