小编Fre*_*eft的帖子

Stackalloc 与 C# 中固定大小的缓冲区。有什么不同

就我而言,以下代码将在堆栈上创建一个数组:

unsafe struct Foo 
{ 
   public fixed int bar[10]; 
}
var foo = new Foo();
Run Code Online (Sandbox Code Playgroud)

stackalloc 语句会做同样的事情:

public void unsafe foo(int length)
{
    Span<int> bar = stackalloc int[length];
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道这些方法之间有什么区别。固定大小缓冲区的目的是什么?每个人都在谈论性能提升,但我不明白为什么我需要它们,当我已经可以使用 stackalloc 在堆栈上创建数组时。MSDN 表示固定大小的缓冲区用于与其他平台“互操作”。那么这个“互操作”是什么样的呢?

c# performance callstack

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

Visual Studio 2019 应用建议快捷方式

Visual Studio 有时会根据最近的编辑提出建议,这些建议有时非常有用。

在此输入图像描述

然而,总是必须按下Alt + Enter并滚动到底部才能应用这些建议并不是真正的最佳工作流程。特别是当在不同的地方多次应用相同的建议时,它会变得非常烦人。

所以我想知道:是否有键盘快捷键可以应用我不知道的建议?由于此功能相当新,我无法在网上找到太多相关信息。

visual-studio visual-studio-2019 intellicode

5
推荐指数
0
解决办法
637
查看次数

MP3精确帧尺寸计算

我知道这里已经有一些这样的问题,但是它们没有完全解释答案中提出的公式。

我正在编写一个解析器,它应该能够处理 MPEG-1,2,2.5 音频层 I,II,III 帧头。目标是计算帧的确切大小,包括标头CRC(如果存在)以及该帧的任何数据元数据(基本上是一个标头的开头和下一个标头的开头之间的字节数)。

互联网上常见的实现此目的的代码片段/公式之一是(没有特定的编程语言):

padding = doesThisFramehavePadding ? 1 : 0;
coefficient = sampleCount / 8;

// makes sense to me. the slot size seems to be the smallest addressable space in an mp3 frame 
// and is thus important for padding.
slotSize = mpegLayer == Layer1 ? 4 : 1;

// all fine here. bitRate / sampleRate yields bits per sample, multiplied by that weird 
// …
Run Code Online (Sandbox Code Playgroud)

mp3 lame

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

Avalonia UI 弹出叠加层

我的问题很简单:

如何使用 avalonia 实现叠加弹出效果?

我的意思是我想让包含我的 UI 元素的整个面板变暗一点(尝试了不透明度属性,但它看起来不太好,并且 OpacityMask 似乎只支持“透明”作为颜色,但我如果可能的话想要半透明甚至模糊)。然后我想显示一个小弹出框。如果这是 CSS 我就可以做position: absolute;,但是我不知道如何使用 avalonia 来做到这一点。

为了形象化我的意思,这里有一些 Windows 窗体应用程序的屏幕截图,我能够在其中实现所需的效果:

我的UI没有叠加效果: 在此输入图像描述

我的带有叠加效果的用户界面: 在此输入图像描述

正如你所看到的,整个 UI 变暗了一点,而背景仍然可见(当使用 avaloniaOpacity属性时,效果不一样并且非常不一致,因为在给定位置上彼此重叠的面板越多,面板越少背景似乎受到了影响Opacity,看起来不太好。如果您愿意,我可以添加屏幕截图,说明稍后它看起来有多糟糕。)

把它们加起来:

1. 如何稍微一致地使面板及其所有内容变暗(甚至模糊?),以便仅仅因为透明度表现得很奇怪,具有相同背景颜色的堆叠面板就不会变得可见?

2. 相当于 CSS 的 avalonia 是什么position: absolute;,以便我可以将弹出窗口放在屏幕中间并位于其他所有内容之上?

c# reactiveui avaloniaui

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

AvaloniaUI如何继承TextBox

因此,我尝试使用 Avalonia UI 框架创建一个TextBox支持SecureString(基本上我想覆盖)的自定义控件。OnTextInput()

对我来说,显而易见的方法是直接继承TextBox。像这样

namespace myProject.UI.Controls
{
    public class ProtectedTextBox : TextBox
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我对继承的理解,ProtectedTextBox现在应该像TextBox它派生的那样表现得完全一样。

然而,当使用我的时,ProtectedTextBox它似乎根本没有被渲染。我确信我只是在这里犯了一些愚蠢的错误,但我一生都无法弄清楚为什么它不起作用。

预期行为:

这是我用于测试的 axaml 代码:

<Frame xmlns="https://github.com/avaloniaui"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       xmlns:lControls="clr-namespace:myProject.UI.Controls;assembly=myProject"
       mc:Ignorable="d" d:DesignWidth="1440" d:DesignHeight="900"
       x:Class="myProject.UI.Frames.TestFrame">
  <DockPanel Width="1440" Height="900">
      <Panel DockPanel.Dock="Top" Background="Aqua">
        <TextBox Width="200" Height="100" Background="Red"/>
      </Panel>
    <Panel/>
  </DockPanel>
</Frame>
Run Code Online (Sandbox Code Playgroud)

它产生了以下完美的输出:(我们有一个丑陋但工作正常的TextBox预期的

实际行为:

ProtectedTextBox当我使用 my (直接派生自TextBox)时,我不会期望有任何差异

<Frame xmlns="https://github.com/avaloniaui"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       xmlns:lControls="clr-namespace:myProject.UI.Controls;assembly=myProject"
       mc:Ignorable="d" d:DesignWidth="1440" d:DesignHeight="900"
       x:Class="myProject.UI.Frames.TestFrame">
  <DockPanel …
Run Code Online (Sandbox Code Playgroud)

c# inheritance textbox avaloniaui

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