2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【プログラム】C#マスターちょっと来てくれ

1 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:41:29.77 ID:OiUyRQaw0.net
class A
┗class B

class C


とあってclass Cからclass Bのpublicフィールドに
アクセスしたい場合はどう書けばいいの?

2 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:42:27.98 ID:OiUyRQaw0.net
A.B.test = 10;

とか書いたらそんなん無理って言われたんだけど

3 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:43:37.09 ID:mDHHKXtn0.net
staticついてんのか

4 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:43:41.89 ID:zDZrXoVB0.net
class A()
{
public B b = new B();
}

class C()
{
(new A()).b.bunko()
}

5 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:43:57.09 ID:+XxiOkEM0.net
C instance = new C();
instance.publicmethodorvars();
または
C::staticpublic();

6 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:44:08.80 ID:AF9PC0xS0.net
staticメンバなの?

7 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:44:29.93 ID:KQIDfyyV0.net
AもBもpublicにしてるか

8 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:45:41.68 ID:7D6ixJbZ0.net
>>7
無知は黙ってろクズ

9 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:45:50.88 ID:LZmHtK1Y0.net
アクセサメソッドがいるんじゃないのか?

10 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:46:11.71 ID:OiUyRQaw0.net
>>3
え?付いてないよ
付けなきゃ無理なの?

public class A{

 public class B{
  public int test = 0;
 }
}

public class C{

 A.B.test = 100; //←エラー

}



なぜなのか

11 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:47:53.26 ID:OiUyRQaw0.net
http://msdn.microsoft.com/ja-jp/library/9eeb383s(v=vs.90).aspx

ここにも出来ねーよカスって書いてあるんだけど
じゃあどうやったら他クラスのフィールドにアクセスできるんだよ

12 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:48:16.57 ID:LZmHtK1Y0.net
>>10
AとBのインスタンスは作ったのか?

13 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:48:25.67 ID:OiUyRQaw0.net
もしかして参照先のインスタンス取らんといかんのか

14 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:48:56.70 ID:7f8H6VD+0.net
Bを継承すればいいじゃん

15 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:49:07.11 ID:kT4INeza0.net
>>10
それ本当にインナークラスじゃないとダメなの?

16 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:49:13.29 ID:OiUyRQaw0.net
>>12
いいえ

実体ないのにフィールドがあるわけねーだろっていうエラーなの?

17 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:49:18.60 ID:Jk+4c/600.net
>>10
なにやってんだこいつ

18 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:49:25.21 ID:9SFOnm+k0.net
なぜ内部クラスなのか

19 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:49:52.70 ID:7f8H6VD+0.net
それともインターフェースで持ってきたいのか?

20 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:50:33.70 ID:xcyDV28I0.net
>>10
Javaしか知らないけどこいつは何がしたいんだ?

21 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:50:55.69 ID:7D6ixJbZ0.net
>>14
無知は黙ってろクズ

22 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:51:15.85 ID:/XUSEQou0.net
クラス名.フィールドにしたいなら、staticじゃないとダメだよ

23 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:51:28.85 ID:OiUyRQaw0.net
>>15
俺、C#はじめて一ヶ月目!!

class Aがコンテナクラスなの色んなパラメータ管理してる
でもパラメータにも区分あるからインナークラスで分けるかって思った

class A(コンテナ統括クラス)
┗class B(XX関係パラメータクラス)
┗class C(△△関係パラメータクラス)
┗class D(○○関係パラメータクラス)

こんな関係考えてるんだけど・・・・だめ?

24 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:52:01.54 ID:OiUyRQaw0.net
>>14
簡単にクラス継承するなって言われた

25 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:52:20.94 ID:kT4INeza0.net
普通におかしいな

26 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:53:02.21 ID:OiUyRQaw0.net
>>22
staticって読み込み専用だよね?
読み書きしたいんだが・・・

27 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:53:28.62 ID:zDZrXoVB0.net
内部クラス使ったことないからわかんね

28 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:54:03.11 ID:mDHHKXtn0.net
>>26
それはreadonly

29 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:54:51.39 ID:4GwopQuZ0.net
>>26
staticが読み込み専用なんて初めて聞いたわ
読み書き位普通にできるだろ

30 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:55:01.89 ID:OiUyRQaw0.net
じゃあさ、classB消してclassBのフィールドをAに持ってきたら
どうやってそれにclassCからアクセスするの?

その場合はA.test = 100;とかで出来るの?

31 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:55:12.18 ID:/XUSEQou0.net
>>26
違うよ
saticはクラスそのものに属しているって意味
staticなしだとインスタンスに属する
static、staticじゃないやつでも、何かしらのフィールドをコンストラクターで初期化して、そのあと書き換え不可にしたいならreadonlyを使う

32 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:55:55.08 ID:YX3M08Mz0.net
staticついてないものはインスタンスが持つものだからな?
インスタンス作らなきゃ無理に決まってる

33 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:56:29.05 ID:9SFOnm+k0.net
別のクラスの、更に内部クラスのメンバを直接読み書きしたいとか正気かよ

34 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:56:38.72 ID:/XUSEQou0.net
なんかインスタンスとかクラスとかわかってない気がするんだけどわかってる?

35 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:57:15.08 ID:UYFh4sky0.net
>>23
良い設計ではないが、まあ初心者のうちからそんな事考えても仕方ないだろ

だが使い方すらわかってない機能を使うのはやめろ

36 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:57:19.68 ID:OiUyRQaw0.net
みんなありがとう
理解したわ

これ、static付けていいの?
なんかstaticもあんま考えなしに付けるもんじゃないって聞いた事あるんだが
この場合は付けていいのか
それともインスタンス作ってアクセスした方がいいの?

37 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:57:53.83 ID:mDHHKXtn0.net
>>30
var a = new A();
a.test = 100;

まさかインスタンスすら知らないんか

38 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:58:15.73 ID:kT4INeza0.net
static以前にツッコミどころ満載だろ

39 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:58:24.14 ID:OiUyRQaw0.net
>>34
実体と定義
クラスは定義であり実体ではない
インスタンスを持ってはじめて属するフィールドにアクセスできる

とかだよな?
違ったら教えてくれさい

40 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:59:01.25 ID:4GwopQuZ0.net
>>36
インスタンスからアクセスしないならつけてもいいと思う
付けないでインスタンスからでも見れるが

41 :以下、\(^o^)/でVIPがお送りします:2014/07/08(火) 23:59:03.55 ID:OiUyRQaw0.net
>>37
すまん、もう分かった

42 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:00:25.59 ID:y/pJgUg50.net
>>40
インスタンスからはしない(予定)
じゃあ付けるわ

43 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:00:27.12 ID:RF3D+UoZ0.net
とりあえずクラス設計以前にプログラミングの勉強すべき

44 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:00:33.54 ID:mVlZ20lW0.net
>>36
お前がやりたい事は、恐らく、

class A {
 class B {
  public int hoge;
 }

 B b = new B();
}

new A().b.hoge = 10;

45 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:01:18.82 ID:fRb9Bx2E0.net
>>26
static ボインd main
と覚えておけ

46 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:02:26.21 ID:mVlZ20lW0.net
あっ>>44はpublic抜けてたわ

47 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:03:08.36 ID:y/pJgUg50.net
>>44
最後の記述がよく分からん
Aのインスタンス取るのと同時にやってんのかこれ

A a = new A();
B b = new B();

a.b.test = 10;

とか書こうと思ってた
インスタンス取るなら
でもstatic付けるわ

48 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:04:31.37 ID:RF3D+UoZ0.net
>>47
お前は何を言ってるんだ

49 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:04:51.89 ID:mVlZ20lW0.net
>>47
A a = new A();
a.b.hoge = 10;

と同じだよ
staticつけるならAが存在する意義すらない

namespace Settings {
 class B{}
 class C{}
}

でいい

50 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:05:09.16 ID:y/pJgUg50.net
あともう一回聞きたいんだが、C#はイミュータブルですとか書いてあったんだが
渡した先のメソッドでは引数弄らない方がいいの?
refで参照渡しすれば弄れたけど、むしろそんな事するなって感じなの?

51 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:05:51.77 ID:mVlZ20lW0.net
>>50
C#の「何が」イミュータブル?

52 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:07:39.09 ID:OQ4NmD9D0.net
値型と参照型とかもあってそこら変はちょっとややこしいからちゃんとわかるまで下手に触んないほうがいいと思う

53 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:07:41.71 ID:y/pJgUg50.net
>>51
フィールド全部じゃないの?
intとstringで試したけど両方ともコール先のメソッドで
中身書き換えてもコール元のフィールド変わらなかったっぽいんだけど
聞いてたのはstringだけって聞いてたけどintでもそうなった

54 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:07:58.89 ID:h98lHazAi.net
始めて勉強したプログラムがc#なんだがc++とほとんど同じだよね
違いがよくわからん

55 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:10:36.00 ID:Mu5JEd130.net
javaと似てるというならわかるが、、、

56 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:11:07.44 ID:466l7xMF0.net
ひとつ言えるのはオブジェクト指向全く理解できてないので
誰か詳しい人に30分くらい教えてもらえ

57 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:11:22.91 ID:mVlZ20lW0.net
>>53
それはイミュータブルなのではない、単に値渡しなだけだ
stringと値型は、a = bとした時にaはbのコピーが渡る
string以外の参照型は、a = bとした時にaとbは同じものの別名を作っている
関数に渡す時も同じだが、refをつけるとstringや値型でも別名になる

と思うとだいたいあってる

>>54
C++はC#よりさらに意味不明

58 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:11:36.14 ID:y/pJgUg50.net
>staticつけるならAが存在する意義すらない
これどういう意味?

59 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:12:53.26 ID:mVlZ20lW0.net
>>58
全部A.B.hogeってやるなら、Aがclassである必要ないじゃん?
namespaceにした方が、usingでAを省略できる分便利じゃん?

60 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:14:24.14 ID:y/pJgUg50.net
>>57
参照型ってオブジェクト型と同義だよね?

61 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:17:01.30 ID:xOrM/oaZ0.net
プログラムは手段なんだが。これじゃオブジェクト指向の有り難みゼロやん。

62 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:18:47.73 ID:y/pJgUg50.net
>>59
class A
┗class B
   int test;



class A
 int test;

こうする事にするわ
なんでclassBとか作ったんだろ

63 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:19:34.35 ID:bpyuteNu0.net
>>53
string型はたしかにイミュータブルだけど、それゆえに参照型のくせに振る舞いが値型っぽい

64 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:19:36.48 ID:mVlZ20lW0.net
>>60
組み込みのobject型との違いがわからなくなるからあまり使う用語ではないけれど、まあそうだな
プリミティブ型とstruct以外の型

65 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:20:41.32 ID:XbEGG3io0.net
>>62
作ったお前にわからんものが部外者にわかるわけもない
何のプログラム作ってるの?

66 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:20:53.52 ID:oOemdOXy0.net
クラスCからAとB探せ!って命令してんのがお前
んでコンパイラさんはそのAとBがどこにあるのか分かんねえよハゲって言ってる

67 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:23:34.21 ID:mVlZ20lW0.net
>>62
>>23を見る限り、BCDと分ける事自体は間違った考え方じゃなかったから自信持っていいぞ
とりあえずBCDを別々に作ってから、後で別々に管理するのが嫌だからAを作る、
という考え方をすればきっとどうすればいいかわかるはず

68 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:24:09.04 ID:y/pJgUg50.net
イミュータブルが何なのか分からんくなってきた

string str = "あいうえお";
Test(str);


void Test (string str){
str = "かきくけこ";
}

★のとこでのstrって"あいうえお"じゃん?
Test内のstrとは別実体だからっしょ?
イミュータブルってこういう事なんじゃなくて???

69 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:24:17.74 ID:OQ4NmD9D0.net
struct Struct {public string a="Struct";}

class Class{public string a="Class";}

void StructTest1(Struct x){ x.a="StructTest1";}

void StructTest2(ref Struct x){x.a="StructTest2";}

void StructTest3(Struct x){x=new Struct(){a="StructTest3"};}

void StructTest4(ref Struct x){x=new Struct(){a="StructTest4"};}

void ClassTest1(Class x){x.a="ClassTest1";}

void ClassTest2(ref Class x){x.a="ClassTest1";}

void ClassTest3(Class x){x=new Class(){a="ClassTest3"};}

void ClassTest4(ref Class x){x=new Class(){a="ClassTest4"};}

これの結果がわかれば値渡し、参照渡し、値型、参照型はOK

70 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:29:26.73 ID:mVlZ20lW0.net
>>68
「イミュータブル」自体は、単に「変更不可能」を意味するだけ
str[0] = 'a'
みたいな事はできない、ということ

それにその例だと、参照型でも同じ事になる

void Test(SomeClass a) {
 a = new SomeClass();
}

と同じだからな

71 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:31:52.93 ID:bpyuteNu0.net
>>68

string str1 = "あいうえお";
Test(str1); //ここでstr1が参照してる"あいうえお"というstringオブジェクトがTestメソッドに渡される

void Test (string str2){ //"あいうえお"というstringオブジェクトが渡されてくる(str1が渡されてくるわけではないことに注意)
str2 = "かきくけこ"; //str2の参照を"かきくけこ"というstringオブジェクトにする
}

イミュータブルについては.>>70の言うとおり

72 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:32:58.57 ID:y/pJgUg50.net
>>70
プリミティブ型でも同じ結果になったんだけど・・・

73 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:36:40.81 ID:y/pJgUg50.net
str[0] = 'a'

これ配列だよね?
すまん、まだ配列はやってない・・・
str[0]は配列の先頭アドレスの意味?

74 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:37:11.27 ID:OQ4NmD9D0.net
イミュータブルなんて言葉は全然意味違くてC#とは関係ないんだから忘れよう
イミュータブルってのは再代入禁止ってこと
>>69のコードで実験すれば全部わかるよ

75 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:37:12.23 ID:mVlZ20lW0.net
>>72
refつけてないんだから当たり前じゃん

76 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:37:55.67 ID:y/pJgUg50.net
とりあえず俺は>>68のように引数でフィールド渡して
同名のフィールドをコール先で変えてもコール元フィールドは不変ですよ
っていうのがイミュータブルだと理解してたけど
それが違うということは分かった

77 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:40:21.88 ID:y/pJgUg50.net
>>75
意味が分からん・・・
てか実際refつけて渡してコール先メソッドで変えたら
コール元の中身も変わった
これは参照渡しにして中身変えたからそりゃ変わるわって事じゃないの?

78 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:42:32.37 ID:mpFwCjHx0.net
そもそも何したいのか言えばいいのに
こういうの大体作り自体に問題あるから

79 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:47:13.64 ID:mVlZ20lW0.net
>>77
うん、参照渡しにしたんだから、変わるのは当然
ただ、お前には参照渡しの概念はまだ早いのだから、触るべきではない
この辺、Cでポインタを理解すれば一発なんだが……

80 :以下、\(^o^)/でVIPがお送りします:2014/07/09(水) 00:52:32.67 ID:KpeRFg4b0.net
WPFのイベントドリブンてウィンドウズフォームと同じ?

総レス数 80
20 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★