小编Tra*_*rap的帖子

删除以前版本的.NET框架是否安全?

我刚刚安装了3.5 .NET Framework,并且在进行一些清理时我注意到我安装了很多旧版本(1.1,1.1 Hotfix(xxx),2.0,2.0 Service Pack等...).我想知道我是否可以安全地处理所有这些或者在运行较低版本的.net应用程序时需要这些.

提前致谢.

安装3.5后,这是安全卸载.NET Framework 2.0和1.0的重复吗?

.net .net-framework-version

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

无法将附加属性绑定到另一个依赖项属性

我在写一个控制库.在这个库中有一些自定义面板,其中填充了用户UIElements.由于我的lib中的每个子元素都必须具有"Title"属性,因此我写了以下内容:

// Attached properties common to every UIElement
public static class MyLibCommonProperties
{
    public static readonly DependencyProperty TitleProperty =
        DependencyProperty.RegisterAttached( 
            "Title", 
            typeof(String),
            typeof(UIElement), 
            new FrameworkPropertyMetadata(
                "NoTitle", new PropertyChangedCallback(OnTitleChanged))
            );

    public static string GetTitle( UIElement _target )
    {
        return (string)_target.GetValue( TitleProperty );
    }

    public static void SetTitle( UIElement _target, string _value )
    {
        _target.SetValue( TitleProperty, _value );
    }

    private static void OnTitleChanged( DependencyObject _d, DependencyPropertyChangedEventArgs _e )
    {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,如果我写这个:

<dl:HorizontalShelf>
    <Label dl:MyLibCommonProperties.Title="CustomTitle">1</Label>
    <Label>1</Label>
    <Label>2</Label>
    <Label>3</Label>
</dl:HorizontalShelf>
Run Code Online (Sandbox Code Playgroud)

一切正常,属性获取指定的值,但如果我尝试将该属性绑定到其他一些UIElement DependencyProperty,如下所示: …

c# wpf xaml binding attached-properties

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

为每个处理器生成多个线程是否有意义?

从逻辑的角度来看,一个应用程序可能需要数十个或数百个线程,其中一些线程将在大多数时间内休眠,但很少有线程将始终同时运行.问题是:产生比系统中的处理器更多的并发线程是否有意义,还是浪费?

我已经看到一些服务器应用程序实现了一个调度程序来逻辑地管理任务(通常称为作业),但也产生了很多线程,所以我没有看到它的好处.

提前致谢.

concurrency multithreading

8
推荐指数
3
解决办法
3096
查看次数

使用==运算符比较两个舍入的浮点数是否正确?

或者操作是否有可能失败?

谢谢.

我选择了错误的术语,我真正的意思是四舍五入到0,而不是截断.

关键是,我需要比较两个双精度的整数部分,我只是将它们转换为int然后使用==,但是,正如有人在我之前的一个问题中指出的那样,这可能会引发溢出异常,如果double不能适合整数.

所以问题是'使用==运算符来比较之前舍入为0的两个双精度是否正确,或者我应该坚持使用cast to int方法并捕获可能的异常?

.net floating-point compare rounding

6
推荐指数
2
解决办法
3527
查看次数

有没有办法在c#中强制执行函数内联?

据我所知,没有办法提示c#编译器内联一个特定的函数,我想这就像设计一样.

我也认为不要让程序员指定什么内联和什么不是通常是个好主意,因为这意味着你认为你比JIT编译器更聪明(我尊重那些实际上是那些人),但是,什么如果我想指定代码的关键部分需要以任何代价非常快,无论如何在目标机器上实现它?到目前为止,你不能做这样的事情,我想知道c#语言和JIT是否都支持这个功能.

就我而言,我知道目标机器是什么,我知道函数内联将有助于提高性能.这让我觉得强制执行函数内联的唯一方法是了解JIT在什么情况下会这样做,但我认为这也不是一个好主意,

关于这个问题的任何亮点都将非常感激.

谢谢.

c# optimization call overhead inlining

6
推荐指数
2
解决办法
1097
查看次数

是否可以在不使用分析器的情况下跟踪C#应用程序中的内存使用情况?

我想编写一个简单的应用程序来跟踪它当前的内存使用情况,创建的对象的数量等.在C++中,我通常会覆盖new运算符,但由于显而易见的原因,我无法在C#中执行此操作.没有使用分析器,有没有办法做到这一点?

.net c# memory memory-management

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

在c#中使用继承而不是名称别名是否正确?

换句话说,使用是否正确:

public class CustomerList : System.Collections.Generic.List<Customer>
{
    /// supposed to be empty
}
Run Code Online (Sandbox Code Playgroud)

代替:

using CustomerList = System.Collections.Generic.List<Customer>
Run Code Online (Sandbox Code Playgroud)

我宁愿使用第一种方法,因为我只需要定义一次CustomerList,每次我需要一个客户列表时,我总是使用相同的类型.另一方面,使用名称别名方法不仅迫使我必须在任何地方重新定义它,而且每次有人想要使用它时都会给出不同的别名(想想一个大团队),从而导致代码不太可读.

请注意,在这种情况下的意图永远不会扩展类,只是为了创建一个别名.

c# inheritance alias typedef

5
推荐指数
2
解决办法
887
查看次数

如何使用生成器迭代树结构?

我试图弄清楚如何在树节点中实现一个函数,该节点返回其所有后代叶子(无论是直接还是间接).但是,我不想传递一个容器,其中叶子节点将递归放置(树可能很大),而是我想使用生成器迭代树.我尝试了一些方法,但到目前为止还没有一个方法.这是我最接近可能的解决方案:

    public interface ITreeNode
    {
        IEnumerable<ITreeNode> EnumerateLeaves();            
    }

    class Leaf : ITreeNode
    {
        public IEnumerable<ITreeNode> EnumerateLeaves()
        {
            throw new NotImplementedException();
        }
    }

    class Branch : ITreeNode
    {
        private List<ITreeNode> m_treeNodes = new List<ITreeNode>();

        public IEnumerable<ITreeNode> EnumerateLeaves()
        {
            foreach( var node in m_treeNodes )
            {
                if( node is Leaf )
                    yield return node;
                else
                    node.EnumerateLeaves();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.我究竟做错了什么?如果在同一个函数中有一个yield语句,似乎递归地调用.EnumerateLeaves将不起作用.

任何帮助将非常感谢.提前致谢.

编辑:我忘了提到一个分支可以有叶子或分支作为子,因此递归.

.net recursion iterator yield generator

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

当任何数学运算产生'NaN'时,如何强制C#编译器抛出异常?

我最近编写的程序中的一些数学函数返回了不可接受的值,例如NaN(可能是因为没有检查某些函数的输入参数).问题在于,很难找到哪些函数传递了错误的值.这会导致错误在整个代码中传播,并使程序在几分钟或几小时后崩溃,如果有的话.

我想知道是否有办法在任何操作产生NaN值的时候捕获这些错误操作(与一些C/C++编译器抛出的'DivisionByZero异常'几乎相同,如果我记得的话).

提前致谢.

PD:如果需要,请随时重新标记我的问题.

c# math exception

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

将flags寄存器用作布尔返回值被认为是不好的做法吗?

我正在x86汇编程序中编写一些程序来修改ZF作为返回布尔值的方法,所以我可以这样做:

call is_value_correct
jz not_correct
Run Code Online (Sandbox Code Playgroud)

我想知道这是否被认为是不好的做法,因为一些编码标准说应该在AX寄存器中返回简单的值.

x86 assembly coding-style

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