如果我使用try/catch/finally块我应该在哪里以及如何初始化变量?例如,假设我正在尝试使用FileStream.我想捕获创建或使用流时抛出的任何异常.然后,无论是否有任何问题,我都希望确保创建的任何流都已关闭.
所以我会做这样的事情:
System.IO.FileStream fs;
try
{
fs = new System.IO.FileStream("C:\test.txt", System.IO.FileMode.Open);
//do something with the file stream
}
catch (Exception exp)
{
//handle exceptions
}
finally
{
//ERROR: "unassigned local variable fs"
if (fs != null)
{
fs.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这给了我在finally块中说错误unassigned local variable fs.然而,如果我改变的声明fs,以System.IO.FileStream fs = null它的工作原理.
为什么我需要显式设置fs为null?我也试过fs在try块中声明,但后来我The name fs does not exsist in the current context在finally块中得到了错误.
BTW:我知道我可以使用Using块,但我的问题是要了解try/catch/finally块的正确用法.
有这个代码:
typedef volatile int COUNT;
COUNT functionOne( COUNT *number );
int functionTwo( int *number );
Run Code Online (Sandbox Code Playgroud)
我无法摆脱一些警告..
我在functionOne原型上得到了这个警告1
函数返回类型时忽略[警告]类型限定符
我得到这个警告2,无论我用一个COUNT 指针参数而不是一个int指针调用functionTwo
[警告]从指针目标类型中抛出限定符
显然变量/指针不能"强制转换"为volatile/un-volatile ..但是每个参数都必须指定为volatile吗?那么如果已经为非易失性变量定义了库函数怎么用呢?
编辑:使用gcc -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wextra -Wstrict-prototypes -Wmissing-prototypes …
编辑:在Jukka Suomela建议之后,这是警告二的代码示例
typedef volatile int COUNT;
static int functionTwo(int *number) {
return *number + 1;
}
int main(void) {
COUNT count= 10;
count = functionTwo(&count);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种打包算法,它将不规则多边形缩小为矩形和直角三角形.该算法应该尝试使用尽可能少的这种形状,并且应该相对容易实现(考虑到挑战的难度).在可能的情况下,它还应该优先考虑三角形的矩形
如果可能,这个问题的答案应该解释建议算法中使用的一般启发式方法.
对于小于100个顶点的不规则多边形,这应该在确定的时间内运行.
目标是为外行人产生不规则多边形的"合理"分解.
应用于解决方案的第一个启发式算法将确定多边形是规则的还是不规则的.在正多边形的情况下,我们将使用我的类似文章中关于常规多边形的方法:正则多边形的有效填充算法
alt text http://img401.imageshack.us/img401/6551/samplebj.jpg
我不喜欢WPF无法以不区分大小写的方式解释文本.
是否有任何工具(即VS插件)将采用我的VB .NET代码并为我处理区分大小写的问题?
编辑:现在举例.
输入:
<Dockpanel DockPanel.Dock="Bottom">
<Label Content="(c) blahblah" HorizontalAlignment="Left" Name="Label2" VerticalAlignment="Bottom" Opacity=".75" Background="White" DockPanel.Dock="bottom"/>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
输出:
<DockPanel DockPanel.Dock="Bottom">
<Label Content="(c) blahblah" HorizontalAlignment="Left" Name="Label2" VerticalAlignment="Bottom" Opacity=".75" Background="White" DockPanel.Dock="Bottom"/>
</DockPanel>
Run Code Online (Sandbox Code Playgroud) 我需要检查文件是否存在但我不知道扩展名.
IE我想做:
if(file_exists('./uploads/filename')):
// do something
endif;
Run Code Online (Sandbox Code Playgroud)
当然,因为它没有扩展,所以不会工作.扩展名为jpg,jpeg,png,gif
没有做循环的任何想法吗?
VS的ReSharper扩展建议我在下面的属性中使用PascalCase.
public Color Color { get; private set; }
Run Code Online (Sandbox Code Playgroud)
这里颜色是枚举类型.我永远不会想到这是可能的,因为它与类型相同.但它是有效的.这是一般规则建议的吗?我是否必须一直听ReSharper?将不胜感激PascalCase的良好参考链接.
有没有办法建立一个允许自由格式XML体的配置部分?我如何在代码中获得自由形式的主体?
例如,我想像这样创建一个ModuleConfigurationSection:
<modules>
<module name="ModuleA" type="My.Namespace.ModuleA, My.Assembly">
<moduleConfig>
<serviceAddress>http://myserver/myservice.svc</serviceAddress>
</moduleConfig>
</module>
<module name="ModuleB" type="My.Namespace.ModuleB, My.OtherAssembly">
<moduleConfig>
<filePath>c:\directory</filePath>
</moduleConfig>
</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
因此,一些代码会使用配置部分来启动每个模块类型,ConfigurationManager.GetSection("modules")并且我希望将moduleConfig元素内的XML 作为不透明配置值传递给模块类的构造函数.
任何输入赞赏!
我知道电子邮件地址限制为254个字符,但有没有一个资源可以概述常见字段的建议最大长度,例如电话,城市等联系信息?
似乎我工作的每个项目都只是从他们提出的极限上开始.我希望找到一个针对特定国家的规范参考.
编辑 - 更新每条评论的电子邮件maxlength.
有人能指点我进行Autonomy IDOL搜索的教程或API资源吗?谢谢.