<< NEW | main | OLD>>
参照型と参照渡しは関係ない。
ということに最近気づきました。

以下C#の話です。


【値型と参照型】

値型はメモリ上の実データに直接アクセスする。
int型とか、構造体、列挙体など。

参照型は実データへの参照を保持する。
string型とか、クラス全般。

ここまでは問題なし。



【値渡しと参照渡し】

メソッドのパラメータの話です。
C#は引数が値型、参照型かに関わらず「値渡し」が原則。

値型値渡し
void Main()
{
int i = 10;
Sample(i);
}
void Sample(int i)
{
i = 0;
}


この場合Sampleメソッドには10という値のコピーが渡される。
渡されるのは値のコピーなので
Sampleメソッドの中で引数の値を変えようとMainのaの値は変わらない。


参照型値渡し
void Main()
{
string str = "test";
Sample(str);
}
void Sample(string str)
{
str = "hogehoge";
}


この場合Sampleメソッドには"test"という文字列を
格納したアドレスへの「参照のコピー」が渡される。
指し示しているオブジェクトは同じなので、
上のようにするとMainのstrの内容も変わる。

しかし・・・もし受け渡し先でNull参照を代入するとどうなるか?
void Sample(string str)
{
str = null;
}

MainからSampleへ渡されたものは「参照のコピー」。
つまり両者は同じ内容の別物です。
たとえSampleの方の参照を変えようと、
Mainのstrは"test"へのアドレスを指し続けます。

私は参照型は参照渡しになるんだと思っていたので、
Sampleメソッド内で
str = null;
した時点で、Mainの参照もNullになるんだと勘違いしてました。


参照渡しする場合はrefキーワードをつけます。
refキーワードは値型専門に使うものだと勘違いしてたんですが、
参照型参照渡しをするときにも使うようです。

値型参照渡し
void Main()
{
int i = 10;
Sample(ref i);
}
void Sample(ref int i)
{
i = 0;
}


参照型参照渡し
void Main()
{
string str = "test";
Sample(ref str);
}
void Sample(ref string str)
{
str = "hogehoge";
}


参照型参照渡しの場合、testという文字列が格納されている
アドレスへの参照への参照を渡していることになります。
ややこしいですねー(わら
この場合、
void Sample(ref string str)
{
str = null;
}

とするとMainのstrもNullになりますね。
大変お勉強になりました。


はぁ・・・こんな人がシステム開発してていいんだろうか。
なんというかお客さんに申し訳ないよホント。

新人に丸投げするこんな会社など早く潰れちゃえばいいのに(ボソ
Windows/.NET comments(0) -


コメント


フォーム

ブログ内検索

自作ツールなど
■棒読みちゃんプラグイン
2ch専用ブラウザ読み上げ(改良版)

■IntelliPark設定ツール
WDIDLE3 for Windows

■マウスユーティリティ
Wheelpool

■ユーザー入力監視ソフト
iDLEM@STER

■さぽている攻略 [公開終了]
さぽつ~る(さぽつーる)
アイテムリスト成型
調合成功率計算
カテゴリー別

openclose

プロフィール

百合亞

Author:百合亞
敬虔な百合信仰者かつ崇拝者
将来の夢は女の子

管理人にメール

お名前:
メール:
件 名:

りんく
ことのはアムリラート

美少女万華鏡 -罪と罰の少女-

FLOWERS

2017年5月26日発売のNavel新作『月に寄りそう乙女の作法2.1エスパル』を応援しています!

「天結いキャッスルマイスター」応援中!

『想いを捧げる乙女のメロディー』2017年3月24日発売予定

オトメ*ドメイン

eye★phon(アイ・フォン)『つい・ゆり ~おかあさんにはナイショだよ~』

AXL新作第12弾「恋する乙女と守護の楯~薔薇の聖母~」 2016年1月29日発売予定!

お嬢様と秘密の乙女

カミツレ

【ハピメア】応援バナー

【白雪の騎士】応援バナー

ノブレスオブルージュ

シロガネオトメ

『ヒメゴト・マスカレイド』応援中!

屋上の百合霊さん

天使の羽根を踏まないでっ

「キミとボクとエデンの林檎」公式サイトへ

『るいは智を呼ぶファンディスク』を応援しています!

『処女はお姉さまに恋してる ~2人のエルダー~』絶賛発売中!!

りんく2
藤真拓哉オフィシャルブログ
CrystalDiskInfo - 水晶雫

マリかう

Powered by FC2 Blog    Templete by hacca*days.

PR