小编Sip*_*ipo的帖子

如何调用base.base.method()?

// Cannot change source code
class Base
{
    public virtual void Say()
    {
        Console.WriteLine("Called from Base.");
    }
}

// Cannot change source code
class Derived : Base
{
    public override void Say()
    {
        Console.WriteLine("Called from Derived.");
        base.Say();
    }
}

class SpecialDerived : Derived
{
    public override void Say()
    {
        Console.WriteLine("Called from Special Derived.");
        base.Say();
    }
}

class Program
{
    static void Main(string[] args)
    {
        SpecialDerived sd = new SpecialDerived();
        sd.Say();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

来自Special Derived.
来自Derived./*这不是预期的*/
从Base调用.

如何重写SpecialDerived类,以便不调用中产阶级"Derived"的方法?

更新: 我想继承Derived而不是Base的原因是Derived类包含许多其他实现.既然我不能在 …

c# polymorphism

108
推荐指数
7
解决办法
9万
查看次数

如何在用户控件中引发事件并在主页中捕获它?

我有一个UserControl,我需要通知父页面点击了一个按钮UserControl.如何UserControl在主页面上引发事件并将其捕获?我尝试过使用static,很多人建议我去参加活动!

c# silverlight events user-controls raiseevent

48
推荐指数
2
解决办法
7万
查看次数

带有自定义参数的C#事件

我想要一个仅将enum作为参数的事件.例如

public enum MyEvents{
   Event1
}

// how do I declare this to take enum MyEvents as argument
public static event EventHandler EventTriggered;

public static void Trigger(MyEvent event )
{
    if (EventTriggered != null)
    {
        EventTriggered(event);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# events

39
推荐指数
4
解决办法
9万
查看次数

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

Google Chrome 的 console.log() 打印 DOM 节点不一致

不是Google Chrome console.log() inconsistency with objects and arrays的重复,因为这个问题与对象和数组无关。


这是一个简单的 HTML 页面:

<head>
  <link rel="stylesheet" href="style.css">
</head>

<body>
  <div></div>
  <div></div>
  <div></div>
  <div></div>

  <script>
    for (const div of document.querySelectorAll("div")) {
      console.log(div);
    }
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

有时结果会按预期显示:

在此输入图像描述

有时好像我用console.dir()而不是console.log()

在此输入图像描述

很少,我会混合:

在此输入图像描述

当我尝试创建上面所示的最小的、可重现的示例时,我删除了<link>,因为它似乎与问题无关。然而,删除它之后,不一致的情况消失了,所以我恢复了它,并尝试最小化 CSS 本身,直到style.css目前完全为空。因此,不知何故,标签的存在<link>似乎至少与问题有关。

这种行为是否有原因,或者是一个错误?

javascript google-chrome google-chrome-devtools console.log

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

如何在表中使用"可排序"和"排序"属性?

我最近在W3Schools的 html标签中看到了两个我不太了解的属性.第一个是<table sortable="sortable">属性,第二个是<th sorted="sorted">属性.

根据W3Schools,sortable属性描述是:

指定表应该是可排序的

sorted属性的描述是:

定义列的排序方向

sorted属性接受的值是:

反转
数字
反转
数字反转

我试着在这里关注如何使用这些属性的W3C文档,但它对我不起作用.

我会非常感谢你的回答.谢谢.

html html-table jquery-ui-sortable

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

私有方法与本地函数

据我了解,本地函数和私有方法都只是作为实现细节——公共方法的助手。为什么我要选择一个而不是另一个?

使用私有方法时,我在对象和方法之间创建了语义关系(虽然从外面看不到),这并不总是合理的。这就是为什么我的第一直觉是本地函数是可行的方法,除非有多个公共方法使用它,在这种情况下我会使用私有方法。

但是,是否有任何客观的理由来支持其中之一?有没有一种情况比另一种更可取的情况?使用其中任何一个的优缺点是什么?

c# c#-7.0

9
推荐指数
2
解决办法
1668
查看次数

有没有办法使用 C# 获取 Windows 默认文件夹图标?

我有一份listView文件清单。我使用以下方法为他们每个人分配了一个图标:

private void SetDocumentIcon(ListViewItem item, FileInfo file)
{
    Icon iconForFile = Icon.ExtractAssociatedIcon(file.FullName);

    if (!documentsIconsImageList.Images.ContainsKey(file.Extension))
    {
        iconForFile = Icon.ExtractAssociatedIcon(file.FullName);
        documentsIconsImageList.Images.Add(file.Extension, iconForFile);
    }

    item.ImageKey = file.Extension;
}
Run Code Online (Sandbox Code Playgroud)

我尝试将此方法用于文件夹,但失败了。据我所知,问题在于Icon.ExtractAssociatedIcon文件而不是文件夹。那么如何提取文件夹的图标呢?

谢谢。

c#

8
推荐指数
2
解决办法
4743
查看次数

为什么我们需要两个接口来枚举集合?

这是相当长一段时间,我一直在试图了解背后的想法IEnumerableIEnumerator.我阅读了网上可以找到的所有问题和答案,特别是StackOverflow,但我并不满意.我明白我应该如何使用这些接口,但不是为什么这样使用它们.

我认为我误解的本质是我们需要两个接口进行一次操作.我意识到,如果两者都需要,可能还不够.所以我采用了"硬编码"等价物foreach(正如我在这里找到的):

while (enumerator.MoveNext())
{
    object item = enumerator.Current;

    // logic
}
Run Code Online (Sandbox Code Playgroud)

并试图让它与一个界面一起工作,认为某些事情会出错,这将使我理解为什么需要另一个界面.

所以我创建了一个集合类,并实现了IForeachable:

class Collection : IForeachable
{
    private int[] array = { 1, 2, 3, 4, 5 };
    private int index = -1;

    public int Current => array[index];

    public bool MoveNext()
    {
        if (index < array.Length - 1)
        {
            index++;
            return true;
        }

        index = -1;
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用foreach …

c# ienumerable ienumerator foreach

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

在WPF中,为什么MouseLeave会触发而不是MouseDown?

这是我的代码:

<StackPanel>
    <StackPanel.Resources>
        <Style x:Key="stlNavButtonBorder" TargetType="Border">
            <Setter Property="BorderBrush" Value="#570000FF" />
            <Setter Property="BorderThickness" Value="5" />
            <Setter Property="Height" Value="100" />
            <Setter Property="Width" Value="200" />
            <Setter Property="Margin" Value="10" />

            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation
                                Storyboard.TargetProperty="BorderBrush.Color"
                                To="blue"
                                Duration="0:0:0.25"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseLeave">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation
                                Storyboard.TargetProperty="BorderBrush.Color"
                                To="#570000FF"
                                Duration="0:0:0.25" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseDown">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation
                                Storyboard.TargetProperty="BorderBrush.Color"
                                To="Black"
                                Duration="0:0:0.25" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
        <Style x:Key="stlNavButtonRectangle" TargetType="Rectangle">
            <Setter Property="Fill" Value="#570000FF"/>
        </Style>

        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border Style="{StaticResource …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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