🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

4回答

1707閲覧

クラスとインスタンスの作り方がわからない

kawano.m

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2021/01/10 01:56

前提・実現したいこと

C#

1var random = new Random();

この行の意味がわかりません。(インスタンスを作っているのはわかりますが……)
var random は変数だと思っていたのですが、学習サイトでは「クラス」と呼んでいますし、
new Random();はおそらくインスタンス?を作っているんだと思うんですが、Randomという文字はどういう処理がされるのか、好きにつけた名前なのか、それすらわかりません。
拙い質問で申し訳ないのですが、どうかよろしくお願いいたします。

該当のソースコード

C#

1using System; 2public class Program{ 3 public static void Main(){ 4 var random = new Random(); 5 var number = random.Next(10,21); 6 Console.WriteLine(number); 7 } 8}

試したこと

「C# クラス インスタンス」等で検索しましたが、望むような結果が得られませんでした。

補足情報(FW/ツールのバージョンなど)

paiza ラーニングで学習しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/01/10 02:02

それがわからないようなサイトで学習するのはやめましょう。できるだけ厚く絵の少ない C# の入門書を買うのが良いと思います。
Zuishin

2021/01/10 02:39

実際の動画を見てみましたが、「new Random() で Random クラスをインスタンス化してそれを random 変数で利用できるようにしているのです」とはっきり言っています。 その前の段階で何度も変数の代入について説明しているので、これを混同する意味がわかりませんが、しいて言えば「音声で聞いているからわかりにくい」というのが原因でしょう。またこのサイトで使われている言語バージョンは非常に古いので、書籍を使うほうが新しい情報を得ることができます。
kawano.m

2021/01/10 02:52

おそらくRandomクラスが何なのか理解していないのが問題かと思います。 クラスが設計図だということは理解していますが、他の方が仰ったように、Randomクラスが「言語やフレームワークが持つ本来の機能なのか、独自に実装された機能なのか」、未だわかっていませんし、公式リファレンスを読んでも読み解けませんでした。 学習サイトについての補足もありがとうございます。新しい書籍の購入を検討してみます。
dodox86

2021/01/10 02:53

私もZuishinさんや回答のradianさんに同意で、とっかかりは簡単な動画やチュートリアルの類で良いとしても、後で公式のリファレンスやしっかりとしたC#の本で知識を固めた方が良いと思いますね。特に初心の頃は、ググっても適切な情報の取捨選択がままならず、振りまわされるばかりだと思います。
guest

回答4

0

ベストアンサー

new Random();はおそらくインスタンス?を作っているんだと思うんですが、Randomという文字はどういう処理がされるのか、好きにつけた名前なのか、それすらわかりません。

Randomは System名前空間 に含まれるクラスです。
コード先頭に using System; を記述していますが、これにより名前空間を省略してクラス名を記述しても、System名前空間からクラスを検索してきてくれるようになります。usingの詳細は、公式のリファレンスを読んでください。
using ディレクティブ (C# リファレンス)

ちなみに、using System; を省略した場合は、

C#

1public class Program{ 2 public static void Main(){ 3 var random = new System.Random(); 4 var number = random.Next(10,21); 5 System.Console.WriteLine(number); 6 } 7}

このように名前空間も含めてクラス名を記述する必要があります。

学習していく上で、色々判らないキーワードが出てくるとは思いますが、まずはGoogleで検索しましょう。ここでその都度聞くより遥かに効率的です。"C# Random" で検索したら、Randomクラスのリファレンスがすぐ出てきます。
C#に関しては、Microsoftのリファレンスが非常に充実しているので、質問する前にきちんと読むようにしましょう。

投稿2021/01/10 02:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kawano.m

2021/01/10 02:33

公式のリファレンスがヒットしましたが、public class Random と new Random(); の関連性がわからず、読み飛ばしてしまいました。
退会済みユーザー

退会済みユーザー

2021/01/10 02:47 編集

そこを面倒くさがらずきちんと読んだり調べたり出来るかが、貴方がプログラミングを身に着けられるかどうかの分岐点になるので、頑張ってください。近道はありません。開発者の能力は、プログラムの知識ではなく、自分で調べて目的を達成できるという問題解決能力による所が大きいのです。問題解決能力は、人から答えを貰っただけでは身に付きません。自分で調べて解決していく経験を多くこなすことにより身に付いていきます。
guest

0

問題切り分けのやり方を学んでください。

Randomという文字はどういう処理がされるのか、好きにつけた名前なのか、それすらわかりません。

まず「C# Random」と検索するところから。
こうすることで**「言語やフレームワークが持つ本来の機能なのか、独自に実装された機能なのか」**が分かります。

結局言語が扱う要素は全て「オブジェクト」と認識しても良いので、それらをどういう風に扱うかというところがプログラミングする人が考えるべきところです。

いずれにしてもプログラムは書いたとおりにしか動かないので、
定義していないオブジェクトを利用することはできません。
new XXX という記述がある場合、XXXはどこかに定義されています。
(定義されていなければ「オブジェクトが見つからない、未定義」である旨のエラーが出るはず)

言語本来が持っている機能になければ自分で実装しなければならないし、
言語本来が持っている機能なら、どのように使えば自分がやりたいことが実現できるかをドキュメントから読み解く
ドキュメントには大抵サンプルコードもついてます。それを動かして自分でも書いてみて変えてみて覚えていく。

ドキュメント読んで分からなければちゃんと「ここを読んだがここが分からない」と具体的に記載すること。
それか、できれば、ドキュメントにある関連機能のリンクやキーワードから1歩2歩踏み込むこと。

大体そういう感じです。
「調べた先にまた分からない表現や単語があってまたそのキーワードで調べていく」
そうやって流れや構成から身につけていきます。

投稿2021/01/10 02:14

編集2021/01/10 02:18
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

変数ですよ。クラスのインスタンスを格納する変数です。
そのインスタンスを、その変数を介して操作します

投稿2021/01/10 02:00

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kawano.m

2021/01/10 02:07

回答ありがとうございます。 new Random(); のRandom は好きな名前をつけているんでしょうか?
y_waiwai

2021/01/10 02:20 編集

そのRandomはクラス名ですね。 自分でクラスを書くなら、クラス名は好きな名前をつけれますよ すでに作ってあるクラスは、名前は決まっています
guest

0

c#では変数を宣言するときは [型名] [変数名] と書きます。
例の場合だと var が型名で random が変数名です。

型名とは、変数の大きさを決めるものだと考えてください。
変数はよく入れ物と例えられますが、型名はその入れ物の大きさを表しています。
例えば整数を入れる入れ物は int、実数を入れる入れ物は double などです。
適切なサイズの入れ物を用意しないとプログラムはエラーを出します。
ここでは var という型を使いますが、これは何でも入れてよいという型です。(厳密には代入するモノのサイズのよってプログラムが勝手に決めてくれるというものです)

では new Random() ですが、これはRandom型のインスタンス(実体)を生成しています。
このRandom型がどんな型なのかは自分で調べる必要があります。
型にはc#に事前に用意された型と誰か(自分も含む)が定義した型の2種類があります。
後者を使うには自分で~~書くかヘッダーファイルをインクルードしなければなりません。書かなければなりません。
ここの例では
ヘッダーのインクルードはされておらず、~~コードの中にもRandom型の定義は書かれていないので事前に用意された型であると推測されます。
あとはc# Random などで検索すればたくさん情報が出てくると思います。

投稿2021/01/10 02:25

編集2021/01/10 02:56
cleaner

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/01/10 02:29

綴りがいくつも違います。一文字でも違うと意図通り動かないので正確に記述しましょう。
m.ts10806

2021/01/10 02:29

Rondom ではないですよ。
cleaner

2021/01/10 02:38

ご指摘ありがとうございます。全然違いましたね。
退会済みユーザー

退会済みユーザー

2021/01/10 02:49

ヘッダーファイルはC、C++の概念でC#とは関係ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問