C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: staticメソッド内のprivate変数について


(過去ログ 97 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■57923 / inTopicNo.1)  staticメソッド内のprivate変数について
  
□投稿者/ まっさ (38回)-(2011/03/22(Tue) 15:10:32)

分類:[C#] 

基本的な事を質問させて下さい。
なんかstatic関連がこんがらがって来ました。

staticメソッド内のprivate変数について

以下のようにクラスがあったとします。

Test.Amethod()
とインスタンスを作成せずに実行できると思います。

この時メソッド内のprivate変数ddd はインスタンスを
作成してないのでクラス間で共通になるのでしょうか?

public class Test
{
static string aaa= "system";

public static Datetime Amethod()
{
Datetime ddd = Datetime.Now;
return ddd;
}
}
引用返信 編集キー/
■57926 / inTopicNo.2)  Re[1]: staticメソッド内のprivate変数について
□投稿者/ 囚人 (593回)-(2011/03/22(Tue) 15:21:09)
「メソッド内のprivate変数」というのは存在しないです。
ただのローカル変数なので、インスタンスとかstaticとかに関係なく「メソッド内でのみ有効(メソッドのスコープで有効)な変数」です。

引用返信 編集キー/
■57927 / inTopicNo.3)  Re[2]: staticメソッド内のprivate変数について
□投稿者/ マサヤ (291回)-(2011/03/22(Tue) 15:33:33)
例えば、
>Datetime ddd = Datetime.Now;
→private Datetime ddd = Datetime.Now;
と書いたらビルド通りますか?

http://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html

ここを読むとstaticについて詳しくなれます。
引用返信 編集キー/
■57928 / inTopicNo.4)  Re[2]: staticメソッド内のprivate変数について
□投稿者/ PATIO (98回)-(2011/03/22(Tue) 15:35:18)
C#の文法書を読むと書いてあると思いますが、

変数のスコープの話とpublicやprivateを使うアクセス制御は別の物です。
なので、混同しないように気をつけた方が良いです。

引用返信 編集キー/
■57931 / inTopicNo.5)  Re[1]: staticメソッド内のprivate変数について
□投稿者/ shu (532回)-(2011/03/22(Tue) 15:46:24)
No57923 (まっさ さん) に返信

複数回Amethodを呼んだときの戻りは変わりますよ。
引用返信 編集キー/
■57946 / inTopicNo.6)  Re[2]: staticメソッド内のprivate変数について
□投稿者/ まっさ (39回)-(2011/03/22(Tue) 16:51:20)
皆さんありがとうございます。

>private Datetime ddd = Datetime.Now;
たしかに、こんな事は出来ませんでした・・・

変数のスコープ、public、privateがごちゃごちゃになっていました。

最後に確認ですが、ローカル変数はメソッド内でのみ有効なので
複数のスレッドからほぼ同時このstaticメソッドを実行してもdddの値は
他スレッドの影響を受けないとの認識であっていますでしょうか?

そしてstatic string aaaの方は、書き換えると、他スレッドにも
影響が及ぶと認識しています。

よろしくお願いします。

引用返信 編集キー/
■57982 / inTopicNo.7)  Re[3]: staticメソッド内のprivate変数について
□投稿者/ じゃんぬねっと (54回)-(2011/03/23(Wed) 10:40:12)
じゃんぬねっと さんの Web サイト
No57946 (まっさ さん) に返信
> 最後に確認ですが、ローカル変数はメソッド内でのみ有効なので
> 複数のスレッドからほぼ同時このstaticメソッドを実行してもdddの値は
> 他スレッドの影響を受けないとの認識であっていますでしょうか?
>
> そしてstatic string aaaの方は、書き換えると、他スレッドにも
> 影響が及ぶと認識しています。

実際にご自身で検証して、結果報告してください。
ひじょうにたのしみにしています。
引用返信 編集キー/
■57993 / inTopicNo.8)  Re[3]: staticメソッド内のprivate変数について
□投稿者/ くり太郎 (8回)-(2011/03/23(Wed) 13:56:53)
くり太郎 さんの Web サイト
No57946 (まっさ さん) に返信
> 変数のスコープ、public、privateがごちゃごちゃになっていました。

変数のスコープと、public、private は別物です。

基本的に、変数のスコープは、{} のブロック内で有効です。
private public はアクセス修飾子です。

> 最後に確認ですが、ローカル変数はメソッド内でのみ有効なので
> 複数のスレッドからほぼ同時このstaticメソッドを実行してもdddの値は
> 他スレッドの影響を受けないとの認識であっていますでしょうか?

static メソッドというのは、静的なメソッドです。
つまり、インスタンスを生成することなく実行することができるメソッドです。
static な変数に対する認識と混乱されているように感じます。

じゃんぬねっとさんも仰られていますが、実際に自分で書いて実行して、その動作を検証してみるのがわかりやすいでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -