■ このスレッドは過去ログ倉庫に格納されています
【プログラム】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 ★