小编ygo*_*goe的帖子

将字节数组转储为十六进制值

在Firefox上的JavaScript中,Uint8Array在控制台上显示如下console.log:

Uint8Array […]
0: 131
1: 165
2: 116
3: 111
4: 112
Run Code Online (Sandbox Code Playgroud)

如何将其显示为十六进制值,如下所示:

Uint8Array […]
0: 0x83
1: 0xa5
2: 0x74
3: 0x6f
4: 0x70
Run Code Online (Sandbox Code Playgroud)

我正在尝试调试一些websocket通信,并且必须在格式规范中查找仅列出十六进制值的字节.

javascript firefox

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

绑定到 WPF 中的另一个绑定

在一个简单的 MVVM 应用程序中,我可以添加对视图中某些属性的绑定。该属性可以访问另一个对象并从中返回属性值。假设我想在视图中显示活动项目。如果没有项目处于活动状态,则应显示特殊注释。

现在,当项目重命名时,名称应该在视图中更新。如果我只是在属性中返回项目名称,它当然不会更新。

所以我想我可以将视图绑定到属性中创建的另一个绑定,该绑定应该转发 PropertyChanged 事件并相应地更新视图。但我看到“System.Windows.Data.Binding”,而不是像“Project: XYZ”这样的绑定的预期结果。

该项目可以在任何地方重命名,因此我想避免从那里自己引发此 ViewModel 的 PropertyChanged 事件。事情本身应该更聪明一点,而不需要从各处推动(当事情变得更加复杂时,你经常会忘记至少一次)。

这是代码:

XAML 视图:

<TextBlock Text="{Binding ActiveProjectName}"/>
Run Code Online (Sandbox Code Playgroud)

C# 视图模型:

public object ActiveProjectName
{
    get
    {
        if (ActiveProject != null)
        {
            // This works but won't update automatically:
            //return "Project: " + ActiveProject.Name;
            // This does not work at all:
            return new Binding("Name")
            {
                Source = ActiveProject,
                StringFormat = "Project: {0}"
            };
        }
        return "(No active project)";
    }
}
Run Code Online (Sandbox Code Playgroud)

这有可能吗?它是如何正确运作的?

c# data-binding wpf xaml mvvm

0
推荐指数
1
解决办法
3776
查看次数

我为什么要使用Assert类方法?

我发现Assert课程方法相当混乱而不是有用.我觉得特别恼人的是微软的MSTest方法期望(或要求?)我向后写比较,i.即 首先是常量/期望值,第二个是变量/实际值.这与自然语言相矛盾,因此与代码中的一般比较的许多编程指南相矛盾.

所以不是这样的:

Assert.AreEqual(5, value, "Value is not correct.");
Run Code Online (Sandbox Code Playgroud)

这有什么问题,看起来更通常的测试指令:

if (value != 5) Assert.Fail("Value is not correct.");
Run Code Online (Sandbox Code Playgroud)

这就是所有代码的样子.这是每个程序员的眼睛训练,以便快速看到和理解.其他断言方法可以很容易地用常规代码编写.

使用C#6,using static你甚至可以放弃这Assert.部分.

我在网上和Assert类文档中找不到任何关于此的理由.

.net c# unit-testing

0
推荐指数
1
解决办法
115
查看次数

测试十进制值是否可以转换为双精度

有什么好方法可以测试一个decimal值是否可以在double不引发异常的情况下转换为字符串,并且最好在不转换为字符串或不从字符串进行解析的情况下进行转换?

我可以测试与longint类型的兼容性,例如:(尚未测试)

if (value == decimal.Truncate(value))
{
    if (value >= int.MinValue && value <= int.MaxValue)
        return (int)value;
    if (value >= long.MinValue && value <= long.MaxValue)
        return (long)value;
    return value.ToStringInvariant();
}
// Now try double, else revert to string again
Run Code Online (Sandbox Code Playgroud)

应该使用此方法将decimal值序列化为可以发送到JavaScript的值。在这里,使用了MessagePack,但是JSON应该具有相同的约束。decimal两者都不支持。

我总是可以按原样发送该值,string但是我想节省一点带宽,并使用可以表示该值的最简单类型(精度很高)。

PS:这不能编译:

if (value >= double.MinValue && value <= double.MaxValue)
    return (double)value;
Run Code Online (Sandbox Code Playgroud)

我比不上decimaldouble。如果这是一条好的道路,那将是一个好的解决方案?

.net c# decimal

0
推荐指数
1
解决办法
202
查看次数

表达式 - 身体属性中的锁定语句

所以这不起作用:

public int BufferedCount => { lock (buffer) { return buffer.Count; } }
Run Code Online (Sandbox Code Playgroud)

第一个{出乎意料.但我不知道为什么.

这也行不通:

public int BufferedCount => lock (buffer) { return buffer.Count; }
Run Code Online (Sandbox Code Playgroud)

buffer是一个私有列表,必须防止来自多个线程的并行请求.该属性应该提供该列表的当前计数.

我想我最近在lock某个地方看到了一个带有声明的表达式身体,但我无法弄清楚它的外观如何.

c# c#-6.0

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

标签 统计

c# ×4

.net ×2

c#-6.0 ×1

data-binding ×1

decimal ×1

firefox ×1

javascript ×1

mvvm ×1

unit-testing ×1

wpf ×1

xaml ×1