我正在使用Visual Studio 2010 + Resharper并在以下代码中显示警告:
if (rect.Contains(point))
{
...
}
Run Code Online (Sandbox Code Playgroud)
rect是一个readonly Rectangle领域,Resharper向我展示了这个警告:
"为值只读的字段调用Impure方法."
什么是不纯的方法,为什么这个警告会显示给我?
通过快速搜索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的存在?
我最近试图为一个Vector2字段创建一个属性,只是意识到它不能按预期工作.
public Vector2 Position { get; set; }
Run Code Online (Sandbox Code Playgroud)
这阻止我改变其成员的价值(X&Y)
查看有关此内容的信息,我读到为Vector2struct 创建属性只返回原始对象的副本而不是引用.
作为Java开发人员,这让我很困惑.
C#中的对象何时按值传递,何时通过引用传递?
是否所有struct对象都按值传递?
我的问题非常简单:
编译器是否将最终类中的所有方法视为最终的?将final关键字添加到最终类中的方法是否有效?
我知道最后的方法有更好的内联机会,这就是我要问的原因.
提前致谢.
当我绘制拉伸时Texture2D,像素会获得类似模糊的效果.
我想在我的游戏中使用'像素化'图形,并想知道如何禁用这个以支持最简单的最近邻居缩放.
我已创建此图片以供说明:(x4 zoom)

我能以什么方式实现这一目标?
使用R#键盘快捷键格式化代码会显示以下窗口:

这迫使我每次都单击" 运行"按钮.
有没有办法将键盘快捷键直接绑定到重新格式代码选项,而不是只打开此对话框窗口?
编辑:为了清楚起见,我实际上并没有用光标单击"运行"按钮,而是按Enter键.(我仍然觉得很烦人,希望有一个直接的快捷方式.)
如果String对象是不可变的(因此显然不能改变它的长度),为什么是length()一个方法,而不是简单地public final int length存在于数组中?
它只是一个getter方法,还是进行某种计算?
试着看看这背后的逻辑.
我已经在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# ×8
java ×2
resharper ×2
.net ×1
asp.net ×1
asp.net-4.0 ×1
cookies ×1
formatting ×1
image ×1
iteration ×1
namespaces ×1
performance ×1
recursion ×1
roslyn ×1
solution ×1
string ×1
struct ×1
webforms ×1
xna ×1
xna-4.0 ×1