小编Vla*_*cic的帖子

Javascript中的类关键字

根据这篇文章,它应该是一种Javascript 2.0方式来定义类.但是,我从未在实践中看到过这一点.这样的问题.如何使用class关键字和Javascript 1.x做事的方式有什么区别?

javascript class

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

实体框架缓慢的 AddRange 插入到 DB

我正在实施 Database First Entity Framework 6.1 以将大约 2000 个主/详细信息集合插入到 SQL 服务器数据库中。每个集合大约有 2~3 个对象。所以要插入的总数或记录是~5000。事务大约需要2~3分钟,非常慢。我正在使用以下代码:

public class Collection
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }

    ...

    public List<DetailCol> Details{ get; set; } 
}


public class DetailCol
    {
        [Key]
        public int Id { get; set; }
        public decimal Lvl { get; set; }
        public string Type { get; set; }
    }

var MyCollections = new List<Collection>();

// Do population of collection and try to …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

6
推荐指数
1
解决办法
1万
查看次数

.NET 4.7.x 中的 .NET 反射比 3.5 慢 3 倍

我有一个应用程序,我们将其从 .NET 3.5 升级到 .NET 4.7.2。唯一的问题确实是我们使用反射的部分代码的性能。在我上传到 Gist 的一个简单示例中最好地解释了整个情况:https : //gist.github.com/vkocjancic/3e8a6b3496c412a75b1c85a1d2ba1111

基本上,我们有一个 POCO 类,如果未为不可空类型的属性设置值,则该类属性方法会抛出异常。

[编辑]:

  1. 是的,我知道这是不正确的或不好使用的模式,但是,该应用程序是从 .NET 1.1 开始的。

  2. 是的,早就该修好了。不是。

然后使用反射来获取 POCO 类实例的属性名称和值,并将其填充到 DataTable。

示例和实际项目源代码完全相同。唯一的区别是,在一种情况下它是使用 .NET 3.5 编译的,第二种情况是使用 .NET 4.7.2 编译的。

这是 10 次调用所用的平均时间(以毫秒为单位):

.NET 3.5      ->  231.1 ms
.NET 4.7.2    ->  713.5 ms
.NET Core 2.2 -> 1013.2 ms
Run Code Online (Sandbox Code Playgroud)

谁能详细说明为什么 .NET 4.7.2 中的反射比 .NET 3.5 慢 3 倍,以及如何解决这个问题。只有在未设置属性并抛出异常时才会发生延迟。如果填充属性值,则性能没有区别。

如果我在调试器中运行示例,.NET 3.5 构建永远不会触发 MissingFieldException。使用 .NET 4.7.2 构建会触发每个异常。

[编辑]

正如@bevan 所提到的,在切换到 .NET 4.0 时实际上会发生减速。> 此外,问题归结为在 .NET 3.5 中抛出和处理异常的速度比在 .NET 4.0 中快 3 …

c# reflection exception

6
推荐指数
1
解决办法
174
查看次数

MFC以透明背景显示png

我需要一种方法来在具有渐变颜色的背景上显示具有透明背景的 PNG 图像。

我试过这个:

CImage img;
CBitmap bmp;
img.Load(_T(".\\res\\foo.png"));
bmp.Attach(img.Detach());
CDC dcStatus;
dcStatus.CreateCompatibleDC(&dc);
dcStatus.SelectObject(&bmp);
dcStatus.SetBkColor(TRANSPARENT);
dc.BitBlt(rectText.left + 250, rectText.top, 14, 14, &dcStatus, 0, 0, SRCCOPY);
bmp.DeleteObject();
Run Code Online (Sandbox Code Playgroud)

但是 foo.png 在原始图像中透明的任何地方都会获得黑色背景。

我确实尝试制作一个用透明颜色绘制的新位图,并对其进行了所有可能的操作,但这并没有帮助。一种排列的样本:

CImage img;
CBitmap bmp;
img.Load(_T(".\\res\\foo.png"));
bmp.Attach(img.Detach());
CBitmap bmpMaska;
bmpMaska.CreateBitmap(14, 14, 1, 1, NULL);
CDC dcStatus;
dcStatus.CreateCompatibleDC(&dc);
dcStatus.SelectObject(&bmp);
CDC dcMaska;
dcMaska.CreateCompatibleDC(&dc);
dcMaska.SelectObject(&bmpMaska);
dcMaska.SetBkColor(dcStatus.GetPixel(0, 0));
//TODO: Bitmap ni transparent
dc.BitBlt(rectText.left + 250, rectText.top, 14, 14, &dcMaska, 0, 0, SRCCOPY);
dc.BitBlt(rectText.left + 250, rectText.top, 14, 14, &dcStatus, 0, 0, SRCAND);  
bmp.DeleteObject();
bmpMaska.DeleteObject();
Run Code Online (Sandbox Code Playgroud)

这并没有奏效。要么,屏幕上全是黑色方块,要么结果和原来一样。 …

c++ mfc png

3
推荐指数
1
解决办法
8525
查看次数

返回带有大量小数位的值

有没有办法让我的函数返回最多15位小数?

long double vzdalenost(long double a1,long double b1,long double a2,long double b2){
    long double vzdal;
    vzdal = ((b1-a1)*(b1-a1)+(b2-a2)*(b2-a2));
    return((long double) vzdal);
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我非常绝望,所以我将所有双打变为长双打,但是返回值仍然只有6位小数,即使它应该有更多.

c

-2
推荐指数
1
解决办法
51
查看次数

标签 统计

c# ×2

c ×1

c++ ×1

class ×1

entity-framework ×1

exception ×1

javascript ×1

mfc ×1

png ×1

reflection ×1