ここから本文です

C#の引数について勉強しているのですが、メソッドを呼び出すときに渡す引数には、...

kik********さん

2018/11/2618:29:16

C#の引数について勉強しているのですが、メソッドを呼び出すときに渡す引数には、値だけではなく変数も渡せる。とあります。

その続きの文に、この時渡される引数は呼び出し元で渡した変数の値をコピーしたもので、引数に渡した変数の値をメソッド側で書き換えても呼び出し元に影響は出ないと書いてあります。

今自分が本に沿って書いているプログラムは

class Program
{
// 引数に商品名を受け取り、
// 商品名に応じた値段を表示するメソッド
static void Shop(string itemName)
{
Console.WriteLine("いらっしゃいませ!");

if (itemName == "薬草")
{
Console.WriteLine(itemName + "は100円です");
}
else
{
Console.WriteLine("売り切れです");
}
}

static void Main(string[] args)
{
// 「薬草」を引数に渡してShopメソッドを呼び出す
Shop("薬草");
}
}

というような感じで引数の値を渡しているのですが、これが変数になると何がどうなって呼び出し元に影響は出なくなるのでしょうか。

Mainメソッドで渡す変数の中の値はメソッド内で書き換えられても、そこで書き換えられているのはMainメソッドからコピーした値であってMainメソッドに書かれている数字は変わらないという事ですか?

そもそも変数というのが「型に名前が付いた箱」というような認識なのですが、この認識がまちがっているのでしょうか?

色々混ざってしまってすいません...。

『引数で変数も渡せるという意味が分からないから教えてほしいという事です』

よろしくお願い致します。( ;∀;)

閲覧数:
24
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

aki********さん

2018/11/2619:53:27

文脈がわからないからいまいちアレだけど
要するに

shop("薬草")
引数に『値』を渡している
string s="薬草";
shop(s);
引数に『変数』も渡せる
その場合、実際にshopメソッドに渡されるのは、変数sの仲の『値』である"薬草"であり、
値はコピーして渡されるので、
shopメソッドの中で、
itemName = "薬草もどき";
と書き換えても、
大元の変数sの中身は変わらない。

と言う説明ではないかと。

質問した人からのコメント

2018/11/26 20:22:07

メソッドの方で書き換えてからMainの方でConsoleWriteLineで表示しても変数は変わりませんでした!
理解できました、ありがとうございました!

ベストアンサー以外の回答

1〜1件/1件中

kar********さん

2018/11/2619:56:33

// 引数に商品名を受け取り、
// 商品名に応じた値段を表示するメソッド
static void Shop(string itemName)
{
Console.WriteLine("いらっしゃいませ!");

if (itemName == "薬草")
{
itemName += "は100円です";
Console.WriteLine(itemName);
}
else
{
itemName = "売り切れです";
Console.WriteLine(itemName);
}
}

static void Main(string[] args)
{
// 「薬草」を変数に代入し引数に渡してShopメソッドを呼び出す
string itemName;
itemName = "薬草";
Shop(itemName);

Console.WriteLine(itemName);
}

こんな感じなら例題になったのかもね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる