0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[C#] クラス・メソッドについて

Last updated at Posted at 2021-02-26

戻り値の無いメソッドでもreturnは使える

ClassSample.cs
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Print12Hour(5);
            Print12Hour(18);
            Print12Hour(25);
        }

        static void Print12Hour(int hour)
        {
            if (hour < 0 || 24 < hour)
            {
                Console.WriteLine("正しい値ではありません");
                return;
            }
            if (hour <= 12)
            {
                Console.WriteLine("午前{0}時です", hour);
            }
            else
            {
                Console.WriteLine("午後{0}時です", hour - 12);
            }
        }
    }
}

スコープ

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var array = new int[] { 5, 8, 4, 9, -3, 6 };
            var foundIndex = -1;
            
            for (var i = 0; i < array.Length; i++)
            {
                if (array[i] < 0)
                {
                    foundIndex = i;  //変数iはforループの外では見えないのでfoundIndexに代入
                    break;
                }
            }
            if (foundIndex >= 0)
            {
                Console.WriteLine($"配列最初のマイナス値は{array[foundIndex]}です");
            }
            else
            {
                Console.WriteLine("配列にマイナス値はありませんでした");
            }
        }
    }
}

インスタンスプロパティ,インスタンスメソッド

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var date = new DateTime(2020, 11, 7);
            var year = date.Year;
            var month = date.Month;
            var day = date.Day;
            Console.WriteLine("{0}年{1}月{2}日", year, month, date);
        }
    }
}
ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var date = new DateTime(2020, 11, 7);
            var date1 = date.AddDays(1);    //1日後を求める
            var date2 = date.AddMonths(6);  //6か月後を求める
            Console.WriteLine(date1);
            Console.WriteLine(date2);
        }
    }
}

静的メソッド,静的プロパティ

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var isLeapYear = DateTime.IsLeapYear(2020); //IsLeapYearは静的メソッド
            if (isLeapYear)
            {
                Console.WriteLine("うるう年です");
            }
        }
    }
}
ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var today = DateTime.Today; //Todayは静的プロパティ、todayはDateTime型
            Console.WriteLine($"{today.Year}{today.Month}{today.Day}日");
        }
    }
}
ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            for (var year = 1868; year <= 2030; year++)
            {
                if (DateTime.IsLeapYear(year))  //インスタンスを生成しないでメソッドを呼び出している
                {
                    Console.WriteLine(year);
                }
            }
        }
    }
}
ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var book1 = new Book { Title = "伊豆の踊子", Auther = "川端康成" };
            book1.PrintTitle();
            var book2 = new Book { Title = "走れメロス", Auther = "太宰治" };
            book2.PrintTitle();
            var book3 = new Book { Title = "銀河鉄道の夜", Auther = "宮沢賢治" };
            book3.PrintTitle();
            Book.ClearCount();
            Console.WriteLine(Book.Count);
        }
    }

    class Book
    {
        public static int Count { get; set; }   //静的プロパティ

        public static void ClearCount() //静的メソッド
        {
            Count = 0;
        }

        public string Title { get; set; }
        public string Auther { get; set; }

        public void PrintTitle()
        {
            Console.WriteLine("書籍名: {0}", Title);
            Count++;

            Console.WriteLine(Count);
        }
    }
}

静的クラス

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var scores = new int[] { 46, 59, 48, 93, 29, 20, 70 };
            var total = ArrayUtils.Total(scores);   //静的メソッドの呼び出し
            var average = ArrayUtils.Average(scores);   //静的メソッドの呼び出し
            Console.WriteLine($"合計:{total}, 平均:{average}");
        }
    }

    static class ArrayUtils //staticメソッドで静的クラスにする
    {
        public static int Total(int[] numbers)  //配列内の数値の合計を求める
        {
            var total = 0;
            foreach (var n in numbers)
            {
                total += n;
            }
            return total;
        }

        public static double Average(int[] numbers)
        {
            var total = Total(numbers); //上記のTotalメソッドを呼び出す
            return (int)total / numbers.Length;
        }
    }
}

Stringクラス

部分文字を取り出す

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var str = "オブジェクト指向";
            var sub1 = str.Substring(0,6);
            var sub2 = str.Substring(6, 2);
            Console.WriteLine(str);
            Console.WriteLine(sub1);
            Console.WriteLine(sub2);
        }
    }
}

前後の空白文字を取り除く
Trim()

文字列の英字を大文字/小文字にする
ToUpper()
ToLower()

文字列の一部を置き換える
RePlace("staticメソッド","静的メソッド")

staticメソッドが静的メソッドの文字に置き換えられる

指定した部分文字列が存在するかどうかを調べる
Contain("調べたい文字列")

文字列を指定した文字で分割する
var items = str.Split(',')
//カンマで分割する。itemsはstringの配列(string[])になる

Mathクラス

絶対値を求める
Math.Abs(150);
Math.Abs(-320);
Math.Abs(-5,67m);
Math.Abs(-1.414);

どちらが大きい/小さいを求める
var max = Math.Max(value1, value2);

var min = Math.Max(value1, value2);

小数点以下を切り捨てる/切り上げる
var floor = Math.Floor(n);

var ceiling = Math.Ceiling(n);

小数点以下を四捨五入する
var r1 = Math.Round(6.4, MidpointRounding.AwayFromZero); //四捨五入

var r2 = Math,Round(6.4); //偶数丸め

DateTime構造体

現在の日時を取得する
var now = DateTime.Now; //現在の日時を取得する
var now = DateTime.Today; //今日の日時を取得
Console.WriteLine("{0}年, now.Year");

他はこれに変える
now.Month
now.Day
now.Hour
now.Minute
now.Second

書式を指定して日付を文字列に変換する
ToString("d");
ToString("D"); など

その他
f, F, yyyy, yy, MM, M, dd, d, HH, H, hh, h, mm, m, ss, s, ddd, tt
yearやsecondなどの頭文字だと思えば覚えやすい

Fileクラス

テキストファイルを作成する

ClassSample
using System;
using System.IO;    //Fileクラスを使用する際に必要

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var lines = new string[]
            {
                "あああああああああああ",
                "いいいいいいいいいいいい",
                "うううううううううううううう",
                "ええええええええええええええええ"
            };
            File.WriteAllLines(@"C:\\temp\\ああああ.txt", lines);
        }
    }
}

これを実行するとtempフォルダにテキストファイルが作成される(Cドライブ直下にtempフォルダを作っておくこと)

スクリーンショット 2021-02-26 021559.png

読み込むときは下記コードを書く

ClassSample
using System;
using System.IO;    //Fileクラスを使用する際に必要

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var lines = File.ReadAllLines(@"C:\temp\ああああ.txt");
            foreach (var line in lines)
            {
                Console.WriteLine(line);
            }
        }
    }
}

配列を返すメソッド

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var nums = ArrayUtils.GetArray(5);
            var total = 0;
            foreach (var x in nums)
            {
                total += x;
            }
            Console.WriteLine($"合計: {total}");
        }

        static class ArrayUtils
        {
            public static int[] GetArray(int count)
            {
                var array = new int[count];
                for (var i = 0; i < count; i++)
                {
                    var line = Console.ReadLine();
                    array[i] = int.Parse(line);
                }
                return array;
            }
        }
    }
}

オブジェクトを返すメソッド

ClassSample
using System;

namespace ClassSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var book1 = MakeBookObject();
            var book2 = MakeBookObject();

            book1.Print();
            book2.Print();

            static Book MakeBookObject()    //Book型を返すメソッド
            {
                Console.Write("書籍名⇒");
                var title = Console.ReadLine();
                Console.Write("著者名⇒");
                var auther = Console.ReadLine();
                Console.Write("ページ数⇒");
                var pages = Console.ReadLine();
                var book = new Book
                {
                    Title = title,
                    Auther = auther,
                    Pages = int.Parse(pages),
                    Rating = 3
                };
                return book;    //Bookオブジェクトを返す
            }
        }

        class Book
        {
            public string Title { get; set; }
            public string Auther { get; set; }
            public int Pages { get; set; }
            public int Rating { get; set; }

            public void Print()
            {
                Console.WriteLine($"★{Title}");
                Console.WriteLine($"{Auther} {Pages}ページ {Rating}");
            }
        }
    }
}
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?