私はC#とOOPの非常に初心者です。C#の関数から2つの変数を集計するような例外はありますか?
ここでは、C#の外部関数から2つの静的変数を集計しているうちに興味深いと感じています。
ここに私のコードです。
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
I出力から最初の2つの値を理解することができ。しかし、bのために、それは2かもしれません!ではない? StaticFunクラスでは、関数public void mount()
を使ってbの値を1増やしています.bは静的変数であるため、その初期値は0です。次に、その関数を2回呼び出した後の値は2になります。私はその事実を理解できません。また、私の前提として、合計は3 + 2 = 5かもしれません。しかし、それは変数aとbと同じ値を作った。
静的な動作が起こったと思いました。しかし、驚くべきことに、非静的変数に対しても同じ出力が得られました! 3.
= 3
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
私はこの事実を完全に誤解しています。私のコンセプトをそのアウトプットについて明確にする人はいますか?
yawwそのC#6の一部と高いので、このいずれかを割り引くません! @ _ @ –
@ShahShishir - FYIでは、C#の規約はメソッド名を大文字で始めることです。 – xr280xr
ここで文字列補間はどのように機能しますか? 参考になれますか? :) –