小编Aci*_*dic的帖子

对于只读字段调用Impure方法

我正在使用Visual Studio 2010 + Resharper并在以下代码中显示警告:

if (rect.Contains(point))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

rect是一个readonly Rectangle领域,Resharper向我展示了这个警告:

"为值只读的字段调用Impure方法."

什么是不纯的方法,为什么这个警告会显示给我?

c# resharper

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

检查Cookie是否存在

通过快速搜索Stack Overflow,我看到人们建议使用以下方法检查cookie是否存在:

HttpContext.Current.Response.Cookies["cookie_name"] != null
Run Code Online (Sandbox Code Playgroud)

或(在Page课堂内):

this.Response.Cookies["cookie_name"] != null
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用索引器(或Cookies.Get方法)来检索不存在的cookie时,似乎实际上创建了一个具有该名称的"默认"cookie并返回该cookie,因此无论我使用什么cookie名称它永远不会返回null.(更糟糕的是 - 创建一个不需要的cookie)

我在这里做错了什么,或者是否有一种不同的方式来简单地通过名称检查特定cookie的存在?

c# asp.net cookies webforms asp.net-4.0

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

结构是"价值传递"吗?

我最近试图为一个Vector2字段创建一个属性,只是意识到它不能按预期工作.

public Vector2 Position { get; set; }
Run Code Online (Sandbox Code Playgroud)

这阻止我改变其成员的价值(X&Y)

查看有关此内容的信息,我读到为Vector2struct 创建属性只返回原始对象的副本而不是引用.

作为Java开发人员,这让我很困惑.

C#中的对象何时按值传递,何时通过引用传递?
是否所有struct对象都按值传递?

c# struct pass-by-value

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

最终课程中的非最终方法

我的问题非常简单:
编译器是否将最终类中的所有方法视为最终的?将final关键字添加到最终类中的方法是否有效?

我知道最后的方法有更好的内联机会,这就是我要问的原因.

提前致谢.

java compiler-construction

31
推荐指数
3
解决办法
8010
查看次数

'最近邻'缩放

当我绘制拉伸时Texture2D,像素会获得类似模糊的效果.

我想在我的游戏中使用'像素化'图形,并想知道如何禁用这个以支持最简单的最近邻居缩放.

我已创建此图片以供说明:(x4 zoom)
在此输入图像描述

我能以什么方式实现这一目标?

c# xna image xna-4.0

18
推荐指数
2
解决办法
4945
查看次数

在单个键盘快捷键中使用R#重新格式化代码

使用R#键盘快捷键格式化代码会显示以下窗口:

在此输入图像描述

这迫使我每次都单击" 运行"按钮.

有没有办法将键盘快捷键直接绑定到重新格式代码选项,而不是只打开此对话框窗口?

编辑:为了清楚起见,我实际上并没有用光标单击"运行"按钮,而是按Enter键.(我仍然觉得很烦人,希望有一个直接的快捷方式.)

c# resharper formatting visual-studio-2010

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

禁用"名称可以简化"IDE0003修复提示

this即使在选项中禁用了检查,Visual Studio 2017 也会显示不必要限定符的提示.

这是它的样子:

(第一行是罪魁祸首,第二行是我多么希望this永远的样子.)

将鼠标悬停在灰色this并点击灯泡上会显示以下建议修复: 在此输入图像描述

我找不到完全禁用它的方法.有时我想要"不必要的" this限定符,有时候我没有,所以我不希望VS对此发表评论.

"无"是最不严格的选择,但它仍然显示出这种烦人的,不同的颜色.
在此输入图像描述


是否有可能完全禁用此检查?

.net c# roslyn visual-studio-2017

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

为什么String.length()是一个方法?

如果String对象是不可变的(因此显然不能改变它的长度),为什么是length()一个方法,而不是简单地public final int length存在于数组中?

它只是一个getter方法,还是进行某种计算?

试着看看这背后的逻辑.

java string

14
推荐指数
2
解决办法
3021
查看次数

递归比迭代更快

我已经在C#中实现了一个四叉树,并且遇到了一个奇怪的现象,其中递归似乎比迭代更好,尽管它看起来应该是相反的.

我的节点看起来像这样:

class QuadNode
{
    private QuadNode topLeft;
    private QuadNode topRight;
    private QuadNode bottomRight;
    private QuadNode bottomLeft;
    // other fields...
}
Run Code Online (Sandbox Code Playgroud)

为了遍历树,我使用了以下递归方法,我在根节点上调用:

Traverse()
{
    // visit 'this'

    if (topLeft != null)
        topLeft.Traverse();
    if (topRight != null)
        topRight.Traverse();
    if (bottomRight != null)
        bottomRight.Traverse();
    if (bottomLeft != null)
        bottomLeft.Traverse();
}
Run Code Online (Sandbox Code Playgroud)

主要是出于兴趣,我试图创建一个遍历树的迭代方法.

添加以下字段到每个节点:private QuadNode next,当我创建树我使用队列,连接进行广度优先遍历next各节点的字段中线上的下一个节点.基本上我从树的节点创建了一个单链表.
此时,我可以使用以下方法遍历树:

Traverse()
{
    QuadNode node = this;
    while (node != null)
    {
        // visit node

        node = node.next;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试每个方法的表现后,我很惊讶地得知,迭代版本是一致且明显比递归一个慢.我已经在巨大的树木和小树上进行了测试,递归方法总是更快.(我用了一个Stopwatch标杆)
,我证实,这两种方法成功地遍历整个树和迭代版本只访问每个节点恰好一次按计划进行 …

c# iteration recursion performance complexity-theory

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

单个项目中的多个名称空间

我发现有时我需要在我正在处理的项目中有多个名称空间 - 在同一个项目中有多个名称空间可能会出现任何问题吗?
替代方案显然是在解决方案中有多个项目(每个命名空间).

c# namespaces solution visual-studio-2010

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