关于Stack Overflow问题的一些评论为什么C#编译器不会阻止属性引用自己?关于警告让我思考在我编写更多VB.NET代码时总是困扰我的旧问题.
其中之一是,如果您声明了一个Function但编译器没有发出警告,但从未执行过显式的Return语句或分配给Function函数.运行Visual Studio 2008,我刚刚做了一个小实验项目,似乎从未修复过该行为.我创建了一个Visual Basic控制台应用程序,其代码如下:
Module MainModule
Sub Main()
Dim test As Boolean = TestWarning()
End Sub
Function TestWarning() As Boolean
Console.WriteLine("There is no Return Statement")
End Function
End Module
Run Code Online (Sandbox Code Playgroud)
我也走进了项目设置,转身On Option Strict和Option Explicit.我还设置了警告配置,以便"没有返回值的函数/运算符"设置为错误.
我编译了项目并且没有警告,并且TestWarning()函数没有错误.这似乎是一个发出警告的好地方,因为它默认为False,你可能只是忘了做一个回报.如果没有return语句,C#将会出错.我认为VB.NET对"没有返回值的函数/运算符"配置做了同样的事情.这是一个错误,还是我缺少的东西?
Function TestWarning() As Boolean
If DateTime.Now.DayOfWeek = DayOfWeek.Monday Then
Return False
Else
Console.WriteLine("There is no Return Statement")
End If
End Function
Run Code Online (Sandbox Code Playgroud)
如果我有一个明确Return的If,并且没有任何内容Else,那么也没有警告或错误.它将简单地采用默认值,即使您可能(通过编程风格)有明确的返回.在这种情况下,我明确地返回False(这是布尔默认值),所以它可能是我应该回到一个隐藏的错误True中Else.
因此,以下lambda表达式不会返回集合中的任何元素,即使在单步执行时我能够验证1个项目是否符合条件.我已经用它的IEquatable实现添加了一个类的示例.
...within a method, foo is a method parameter
var singleFoo = _barCollection.SingleOrDefault(b => b.Foo == foo);
Run Code Online (Sandbox Code Playgroud)
以上都没有回报.有关如何使上述表达式工作的任何建议?
public class Foo: IEquatable<Foo>
{
public string KeyProperty {get;set;}
public bool Equals(Foo other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.KeyProperty==KeyProperty;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != typeof (Foo)) return false;
return Equals((Foo) obj);
}
public override int GetHashCode()
{
return (KeyProperty != …Run Code Online (Sandbox Code Playgroud) 我在ASP.Net应用程序中有一个页面(实际上它的Mvc但不重要),我想只允许从本地机器连接到这个页面.我很乐意在Web.config中做这样的事情:
<location path="resources">
<system.web>
<authorization>
<allow ips="local"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过简单检查后面的页面代码(或控制器),甚至可以只使用IIS配置,但我会喜欢Web.config配置,因为这将是我认为最优雅的解决方案.任何人都知道这是否可行?
我最近跳进了XNA池,并且正在学习C#中框架的所有细节.我在研究中注意到的一件事是,似乎没有广泛接受的"正确"方式来实现GameComponents.
在阅读了这个主题(其中包括)之后,我发现了游戏开发者的广泛偏好.我已经看到一些倡导者从不使用GameComponents(或者只是谨慎地使用),而其他人声称将它们用于一切,直到玩家/敌方单位,导弹等.然后有一些采取更温和的方法,并为中高级实体(如屏幕,渲染器,场景等)保留GameComponent架构,这些实体又包含并驱动其更精细的游戏单元.
在一天结束时,由游戏开发者决定如何最好地实现框架.由于StackOverflow充满了精明的开发人员,他们已经忘记了我所知道的更多,我希望能够在我继续沿着这条路径继续使用框架之前了解共识是什么.
有人想关心他们的想法吗?提前致谢!
我希望我的列标题也是使用MVCContrib网格的页脚.如何添加页脚?
<% Html.Grid(Model).Columns(col =>
{
col.For(c => c.sub_id).Named("Id");
col.For(c => c.name).Named("Name");
col.For(c => c.group).Named("Group");
col.For(c => c.insurance_GL).Named("Insurance").Format("{0:d}");
}).Attributes(id => "list").Render(); %>
Run Code Online (Sandbox Code Playgroud) 我有一个函数,我想将一个可选的boost :: function参数作为报告错误条件的回调.是否有一些特殊值我可以使用默认值使其可选?
例如,使用常规函数指针,我可以这样做:
void my_func(int a, int b, t_func_ptr err_callback=NULL) {
if (error && (err_callback != NULL))
err_callback();
}
Run Code Online (Sandbox Code Playgroud)
我可以用boost :: function替换函数指针做类似的事吗?
将活动添加到现有Android项目时,我手动创建一个新类 - 这是最佳/首选方式吗?其他人如何处理?
我正在开发我的第一个Firefox扩展,为此我需要获得当前页面的完整源代码.我怎么能用XUL做到这一点?
我正在将我的ERB模板转换为HAML模板.
<p>
Welcome to <span><%= name1 %> </span>, <span> <%= name2 %></span> and <span><%= name3 %></span>.
</p>
Run Code Online (Sandbox Code Playgroud)
这就是我想出的
%p
Welcome to
%span= name1
,
%span= name2
and
%span= name3
.
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,有更优雅的方式来做到这一点.
Facelets使用jsfc属性将HTML元素转换为其关联的JSF组件.这对于快速原型设计非常有用,因为它允许您使用可视化设计工具创建视图.然而,我最近发现了Cay Horstmann的这篇博客文章,他将jsfc与复杂组件(如h:dataTable)的使用浪费在一起.
这让我感到震惊,因为Cay Horstmann是我最喜欢的多本Java书籍的作者.然而,在尝试确定问题的范围/性质时,我的Google-fu技能已经取得了零结果,除了Ed Burns最近的帖子,他接近喜欢jsfc(并且他是JSF的所有联合规范领导者) .所以我的问题很简单,是否建议将jsfc与Facelets 一起使用?如果不是它引入的问题是什么.
c# ×2
android ×1
arguments ×1
asp.net ×1
asp.net-mvc ×1
boost ×1
default ×1
eclipse ×1
facelets ×1
function ×1
grid ×1
haml ×1
ide ×1
iequatable ×1
innerhtml ×1
java ×1
javascript ×1
jsf ×1
linq ×1
mvccontrib ×1
vb.net ×1
warnings ×1
web-config ×1
xna ×1
xul ×1