

プログラミング初心者で、基本の勉強をしています。  
１つのクラスで足し算をし、その結果を別のクラスで表示させようとしています。  
引数で受け渡せると思うのですが、コードが書けず、途中でわからなくなりました。  
アドバイスください。お願い致します。

ここ足し算

[code]

    class GetValue
    {
        public static void Calc(int add)
        {
            int a = 3;
            int b = 4;
    
            add = 3 + 4;
        }
    }
    
    //値の表示          
    namespace PraceticeConsoleApp
    {
    　　class Program
        {
            static void Main(string[] args)
            {
                GetValue value = new GetValue();
            }
        }
    }    
    
[/code]


CC BY-SA 3.0
2016-10-22T11:25:47.463
29797
2016-11-04T13:36:29.770
2016-10-22T11:43:59.537
5044
19274
question
c#
クラス間での値の受け渡し


引数で足し合わせる数値を渡して結果をreturn 文で返すようにします。  
staticなメソッドの場合インスタンスをnewで作成する必要はありません。  
やり方は他にも色々あると思いますが基本的なやり方としての例を示します。

[code]

    using System;
    
    class Calc
    {
        public static int Add(int a, int b)//引数２つを受け取り
        {
            return a + b;//足した結果を返す
        }
    }
    
    namespace PraceticeConsoleApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Calc.Add(3, 4));//CalcクラスのAddメソッドをつかって足し算する。
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2016-10-22T11:39:32.317
29798
2016-10-22T11:39:32.317
5044
29797
answer


(学びかけ&しばらく触ってないですが)私なら次のように書きます。

[code]

    Using System; //namespaceの記述の省略
    class GetValue
    {
        public static void Calc(int a, int b)//足したい数字を受け取り…
        {    
            int result = a + b;//足して…
            return result;//return文で返す
        }
    }
    
    //値の表示          
    namespace PraceticeConsoleApp
    {
    　　class Program
        {
            static void Main(string[] args)
            {
                int result = GetValue.Calc(3, 4);//値を渡し、結果を返す
                Console.WriteLine(result);//表示
            }
        }
    }
    
[/code]

staticの場合、newでインスタンス化する必要はありません。


CC BY-SA 3.0
2016-10-22T12:28:24.520
29799
2016-10-22T12:28:24.520
15185
29797
answer


基礎の勉強ということならStaticを使わずコンストラクタを使用したほうがタメになると思うので掲示します。

[code]

    using System;
    
    namespace experiment
    {
        class Program
        {
            //演算クラス
            public class Calculate
            {
                //クラスのフィールド
                private int Value1;
                private int Value2;
    
                //足し算メソッド
                public int Addition() => Value1 + Value2;
    
                //引数付きコンストラクタを使用することでクラス内のフィールドに値を代入。
                public Calculate(int val1,int val2)
                {
                    Value1 = val1;
                    Value2 = val2;
                }
            }
    
            static void Main(string[] args)
            {
    
                var calc = new Calculate(1, 2);
                Console.WriteLine(calc.Addition());
    
                Console.Read();
            }
        }
    }
    
[/code]

> Additionメソッドでラムダ式を使用してますが、別解としては下の形式になります。  
>  ロジックが1行のメソッドでreturnするだけなら見やすさはこちらのほうが良いのでは、ということで本文ではラムダ式を採用しました。
[code]

    public int Addition()
    {
        return Value1 + Value2;
    }
    
[/code]


CC BY-SA 3.0
2016-11-04T13:36:29.770
30108
2016-11-04T13:36:29.770
19429
29797
answer