小编IV.*_*IV.的帖子

是否可以将任意方法组作为参数传递给方法?

我想编写如下函数

// The type 'MethodGroup' below doesn't exist.  This is fantasy-code.
public void MyFunction(MethodGroup g)
{
    // do something with the method group
}
Run Code Online (Sandbox Code Playgroud)

后来,我可以打电话MyFunction任何方法组.像这样的东西.

MyFunction(Object.Equals)
Run Code Online (Sandbox Code Playgroud)

如果我承诺签名,那么事情就可以了.

public void MyFunction(Func<object, object, bool> f)
{
    // do something with known delegate
}
...
MyFunction(Object.Equals)
Run Code Online (Sandbox Code Playgroud)

方法组Object.Equals很高兴被强制转换为已知的委托类型Func<object, object, bool>,但我不想提交特定的签名.我想通过任何方法组MyFunction.

方法组无法转换为 System.Object

public void MyFunction(object o)
{
    // do something with o
}
...
MyFunction(Object.Equals) // doesn't work
Run Code Online (Sandbox Code Playgroud)

我认为每个人都忘记了方法调用的大括号,并在某些时候发现了这一点.我希望这并不意味着方法组不会(或不能转换)为第一类对象.

我不认为Linq的表达会给出我正在寻找的那种普遍性,但我当然可能会遗漏一些东西.

我还应该提一下,如果方法组包含重载,那将是没问题的,前提是我有一种检查方法组的方法.

我怎么处理方法组? 我可以打印组中所有方法的所有签名(重载,扩展方法等),或者我可以用一些参数"调用"该组(如果可能的话,让它解析为组中的正确重载).还有其他方法可以执行这些操作,但它们是您可能希望使用方法组执行的一些操作.

正如几个人所提到的,我可以接受一个 …

c#

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

一个简单的WPF应用程序中的非托管泄漏

当鼠标移动到我的WPF应用程序上时,我遇到了泄漏非托管内存的情况.具体来说,当我在应用程序perfmon或Red Gate的内存分析器中分析应用程序时,私有字节单调增加,但所有托管堆中的字节保持不变 - 我相信,这意味着应用程序具有非托管泄漏.

我创建了一个简单的repro应用程序,但我看不出问题出在哪里.

该应用程序包含一个包含四个项目的ListView.在这些项目上快速移动鼠标会导致问题.

如果你有兴趣重现这个问题,这就是代码 - 它不是很漂亮,但它很简单.

谢谢


编辑:我已为此问题创建了Microsoft Connect问题.


App.xaml中

<Application x:Class="WpfLeakRepro.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="Window1.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

App.xaml.cs

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;

namespace WpfLeakRepro
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

Generic.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <LinearGradientBrush x:Key="ListItemHover"
                         EndPoint="0,1"
                         StartPoint="0,0">
        <GradientStop Color="Aqua"
                      Offset="0" />
        <GradientStop …
Run Code Online (Sandbox Code Playgroud)

c# wpf memory-leaks

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

调试类型初始值设定项中的异常

我有一个没有静态构造函数的静态类,但是有许多静态成员.首次使用该类时,我抛出一个TypeInitializationException.

我打破了CLR异常,我禁用了"Just My Code".

问题是我只在第一次使用这个类时得到这个异常; 我不打破失败的静态字段初始化程序.我当然可以删除静态成员,直到找到罪魁祸首,但有更简单的方法吗?

有没有人有任何调试静态字段初始化的技巧?

c# debugging visual-studio

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

标签 统计

c# ×3

debugging ×1

memory-leaks ×1

visual-studio ×1

wpf ×1