小编use*_*774的帖子

C#可变性 - VS代码分析给我CA2104?似乎......很穷.我误会了吗?

在C#中,我想制作"智能"枚举,有点像Java中那样,其中有更多信息附加到枚举值而不仅仅是底层int.我发生了一个创建类(而不是枚举)的方案,如下面的简单示例所示:

public sealed class C
{
    public static readonly C C1 = new C(0, 1);
    public static readonly C C2 = new C(2, 3);

    private readonly int x;
    private readonly int y;

    private C(int x, int y)
    {
        this.x = x;
        this.y = y;
    }

    public int X
    {
        get
        {
            return this.x;
        }
    }

    public int Y
    {
        get
        {
            return this.y;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行Visual Studio的"代码分析器"时,它会向我发出警告C2104,"不要声明只读可变引用类型".

我明白为什么你一般不想声明只读可变引用类型,但是...我的类不可变,是吗?

阅读警告的文档,似乎他们只是假设任何只读引用类型是可变的.例如,它表示如果类型确实是不可变的,那么请随意抑制此警告.事实上它给了我同样的警告,以下更简单的类:

public sealed class C
{
    public static readonly C C1 …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis immutability mutability visual-studio

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

WPF ScrollViewer - "Page Up/Down"键一直到开头/结尾?

在XAML中,我设置了一个包含ScrollViewer的Grid,其中包含一个TextBox:

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="MainWindow_OnLoaded">
    <Grid>
        <ScrollViewer>
            <TextBox Name="TempTextBox" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"></TextBox>
        </ScrollViewer>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

然后我(在C#中以编程方式)在该文本框中添加了一堆文本.很多台词.大多数情况下,垂直滚动按照我的预期工作:我可以单击并拖动滚动条抓取; 我可以点击抓取器上方或下方的滚动条; 我可以使用向上和向下箭头键; 我可以使用Ctrl-Home和Ctrl-End.所有这一切都很好.但:

如果我使用Page Up或Page Down键,就好像我使用了Ctrl-Home或Ctrl-End.也就是说,它会转到文本的顶部或底部,而不是向上或向下翻页.

难道我做错了什么?我很确定这不是像"你的Ctrl键被卡住"这样的问题,因为Page Up和Page Down在我的计算机上的其他应用程序中运行良好.

c# wpf scroll textbox scrollviewer

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