我很好奇在将值/引用类型传递给方法时C#的行为方式.我想将盒装值类型传递给方法" AddThree ".我们的想法是在调用函数(Main)中输入" AddThree "中执行的操作的结果.
static void Main(string[] args)
{
int age = 3;
object myBox = age;
AddThree(myBox);
// here myBox = 3 but I was expecting to be = 6
}
private static void AddThree(object age2)
{
age2 = (int)age2 + 3;
}
Run Code Online (Sandbox Code Playgroud)
我已尝试使用像字符串这样的纯引用类型,我得到了相同的结果.如果我在一个类中"包装"我的int并且我在这个例子中使用"wrap"类它就像我期望的那样工作,即我得到myBox = 6.如果我修改"AddThree"方法签名来传递参数ref,这也返回6.但是,我不想修改签名或创建一个包装类,我只想将值包装起来.
我目前正在尝试在我的团队中设置开发过程并阅读有关GitFlow的内容.它看起来很有趣,但我可以发现一些问题.
我们假设以下场景:
我们完成的功能F1,F2以及F3和这些合并到develop分支.基于此,我们创建了一个release分支.
如果我们想要摆脱功能,我们该怎么办F3?
看看这张图片,以获得更好的主意.

为什么我在这里得到编译器错误:
int a = 2147483647 + 10;
Run Code Online (Sandbox Code Playgroud)
而不是在这里,如果我正在执行相同的操作:
int ten = 10;
int b = 2147483647 + ten;
Run Code Online (Sandbox Code Playgroud)
我正在学习使用checked和MSDN网站不清楚为什么在第一个代码片段中引发了OverflowException:
默认情况下,如果表达式生成的值超出目标类型的范围,则仅包含常量值的表达式会导致编译器错误.如果表达式包含一个或多个非常量值,则编译器不会检测溢出.
它只解释了行为,但没有解释这种行为的原因.我想知道引擎盖下发生了什么.