我是C#和OOP的初学者。是否有任何一种异常来总结C#中函数的两个变量?
在这里,我总结了两个来自C#中外部函数的静态变量,感觉很有趣。
这是我的代码。
using System;
namespace StaticFun
{
class StaticFun
{
public static int a;
public static int b;
public void count()
{
a++;
}
public void mount()
{
b++;
}
public static int getsum()
{
return a + b;
}
}
class Program
{
static void Main(String[] args)
{
StaticFun obj = new StaticFun();
obj.count();
obj.count();
obj.count();
Console.WriteLine("Value of a for obj : {0}.", StaticFun.a);
obj.mount();
obj.mount();
Console.WriteLine("\na = {0}\nb = {0}\nSum : {0}.", StaticFun.a, StaticFun.b, StaticFun.getsum());
Console.ReadKey();
}
}
}
当我编译这个程序时,我得到如下的输出。的
价值OBJ:3.
一个= 3
B = 3
总:3
我可以理解从输出前两个值。但对于b,它可能是2!不是吗?在StaticFun类中,我做了一个函数public void mount()
来使b的值增加1.由于b是一个静态变量,所以它的初始值是0.然后在调用该函数两次后,它的值将是2.如何将值设为3 ,我无法理解这一事实。另外,总和可能是3 + 2 = 5,如我的假设。但它与变量a和b的值相同。
我以为它发生了它们的静态行为。但令人惊讶的是,它也为非静态变量提供了相同的输出!
这是我的第二代码,
using System;
namespace StaticFun
{
class StaticFun
{
public int a;
public int b;
public void count()
{
a++;
}
public void mount()
{
b++;
}
public int getsum()
{
return a + b;
}
}
class Program
{
static void Main(String[] args)
{
StaticFun obj = new StaticFun();
obj.count();
obj.count();
obj.count();
Console.WriteLine("Value of a for obj : {0}.", obj.a);
obj.mount();
obj.mount();
Console.WriteLine("\na = {0}\nb = {0}\nSum : {0}.", obj.a, obj.b, obj.getsum());
Console.ReadKey();
}
}
}
和输出,以及,一个
价值OBJ:3.
一个= 3
B = 3
总和:3
我完全误解了这个事实。有没有人能让我的观念清楚地表明这些产出?
yaww打折这一点无论因为C#6的一部分,更高的...这是我的愚蠢的错误永远! @ _ @ @ @ @ @ @ –
@ShahShishir - 仅供参考,C#约定用于以大写字母开头的方法名称。 – xr280xr
字符串插值如何在这里工作? 你能给一些参考吗? :) –