我一直在使用C#很长时间但从未意识到以下情况:
public static void Main()
{
for (int i = 0; i < 5; i++)
{
}
int i = 4; //cannot declare as 'i' is declared in child scope
int A = i; //cannot assign as 'i' does not exist in this context
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么我不能在for块之外使用'i'的值,如果它不允许我声明一个带有这个名字的变量?
我认为for循环使用的迭代器变量仅在其范围内有效.
关于这一点有很多矛盾的信息.虽然有人说C#被编译(因为它被编译成IL然后在运行时被编译为本机代码),但是其他人说它被解释为它需要.NET.EN Wiki说:
许多解释语言首先被编译为某种形式的虚拟机代码,然后在运行时将其解释或编译为本机代码.
所以我很困惑.任何人都可以清楚解释这个
据说语句覆盖确保代码中的每个语句至少执行一次.据说
决策/分支覆盖测试是测试决策的每个分支/输出,即将执行假/真分支中的所有语句.
但是不一样吗?在Statement覆盖中我需要执行所有语句,所以我想它只能通过运行所有可能的方式来完成.我知道我在这里遗失了一些东西..
我有一个代码:
static short Sum(short a, short b)
{
return a + b;
}
Run Code Online (Sandbox Code Playgroud)
而且它没有编译,saynig无法将'int'转换为'short'.我今天可能真的很累,但我看不出这个问题!
我被告知JMeter在ASP.NET页面遇到了一些问题,这是真的吗?
我是JMeter的初学者,不想遇到一些我无法解决的问题.我读过有些人成功使用它,事实是,它需要多少手动更改和JMeter知识?
另外一个基本问题:JMeter的最新版本在测试ASP网页方面有多好?
我找到了一些我并不真正得到的东西:
protected override void OnPaint(PaintEventArgs e)
{
DrawChar(e.Graphics);
base.OnPaint(e);
}
void DrawChar(Graphics g)
{
if (body != null)
{
g.DrawImage(body, X, Y);
}
}
Run Code Online (Sandbox Code Playgroud)
假设"body"是空的 - 如果我删除DrawChar中的条件,程序从不绘制任何东西,我发现onPaint甚至不再被提升(例如,当调整大小或缩小和恢复窗口时).
编辑:重点是 - 如果DrawImage失败(你不知道调试器,它只是不绘制图像,例如当Image为null)时,应用程序中的OnPaint事件不再被引发.
具有以下一般定义:
故障 - 错误的原因(编码
错误)错误 - 可能导致故障
失败的错误状态- 服务偏离正确的服务
以下代码中的正确应用程序是什么:
当余额为100或更少时,代码不应允许撤销
if (Balance<100)
{
return false;
}
else WithDraw();
Run Code Online (Sandbox Code Playgroud)
据我了解,故障是缺少=运算符.但是错误和失败会是什么?
我已经阅读了很多关于C#的争议,有些人说它被解释,有些人说它不是.我知道它被编译到MSIL中,然后在运行时进行JITed,具体取决于处理器等......但它是否仍然以它需要运行VM(.NET)的方式解释?
我一直在阅读关于形式验证的文章,基本点是它需要一个正式的规范和模型来使用。然而,许多来源将静态分析归类为形式验证技术,有些提到抽象解释并提到它在编译器中的使用。所以我很困惑 - 如果没有模型的正式描述,这些如何进行形式验证?
编辑:我发现的一个来源是:
静态分析:根据预定义的抽象(有时可以由用户自动/手动定制)从程序文本中自动计算抽象语义
那么这是否意味着它只适用于源代码而无需正式规范?这就是静态分析器所做的。
另外,在没有形式验证的情况下可以进行静态分析吗?例如,SonarQube 真的执行形式化方法吗?
很久以前我收到了ISTQB认证,我记得它有以下区别: -
静态分析:对源代码执行,检测无法访问的代码,未分配的值等. -
动态分析:可以检测内存泄漏等,需要执行(分析).
但是当我今天搜索时,我可以看到各种网站和提到静态分析的来源也能够检测到内存泄漏.
所以我想知道,静态分析真的有能力吗?如果是这样,那么就结果而言,动态分析之间有什么不同?