トップページ > プログラム > 2014年12月14日 > uwJwvBsv

書き込み順位&時間帯一覧

2 位/205 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000000003340010



使用した名前一覧書き込んだスレッド一覧
名無しさん@そうだ選挙に行こう
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part113

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part113
864 :名無しさん@そうだ選挙に行こう[sage]:2014/12/14(日) 19:24:29.97 ID:uwJwvBsv
class TEST_CLASS{
//省略
}
class USECLASS{
  public TEST_CLASS[] tc1 = new TEST_CLASS[3];
}

こんな感じでメソッド外に書くことが出来ますが
これはTEST_CLASS3個分の参照テーブルを作った、
という処理なんでしょうか?
この場合、USECLASSを破棄したい場合はC++でいう deleteが tc1 についても必要なのでしょうか?
ふらっと C#,C♯,C#(初心者用) Part113
867 :名無しさん@そうだ選挙に行こう[sage]:2014/12/14(日) 19:36:10.74 ID:uwJwvBsv
>>865
nullを入れればGCの対象になってそのうち消える、てのはなんとなく知ってるのですが
メソッド外なのでクラスごと消せば消えてくれるのかな?と思った次第。
C++とかのクラス内に持ったクラスが自動でデストラクトが通ってたのでそういう風な…
ふらっと C#,C♯,C#(初心者用) Part113
869 :名無しさん@そうだ選挙に行こう[sage]:2014/12/14(日) 19:47:23.14 ID:uwJwvBsv
聞きたいことを答えてもらえる感じじゃないようなので取り下げます

ありがとうございました
ふらっと C#,C♯,C#(初心者用) Part113
872 :デフォルトの名無しさん[sage]:2014/12/14(日) 20:33:16.45 ID:uwJwvBsv
>>871
> その通り。
> ただしTEST_CLASSの実体はまだ作成されていないことに注意。
そういう挙動かと思い、
tc1[0]=null
・・・
tc1[4]=null
となるのを期待していたのですが tc1=nullのままでした。
クラスではなく int で試した場合は期待通り配列化していたので
参照型と値型で挙動が違うのかな?と思い調べています。

> IDisposableを実装しない場合は何もすることが無く、
> ガベージコレクションに解放をまかせるだけ。
IDisposableも調べてみます。

環境はUnity4.6+VSでやっているのでそっちの問題…てのはないですよねさすがに
ありがとうございました。
ふらっと C#,C♯,C#(初心者用) Part113
873 :デフォルトの名無しさん[sage]:2014/12/14(日) 20:49:17.01 ID:uwJwvBsv
しつこくて申し訳ないですが続報

  public TEST_CLASS[] tc1 = new TEST_CLASS[3];
これを
  private TEST_CLASS[] tc1 = new TEST_CLASS[3];
public宣言をやめたら期待通りの挙動になりました。
理由は別途調べますが、とりあえずはprivateにしてゲッターなど利用するような
コードで実装していこうと思います。

そんで、言語仕様についての理解を深める必要が相当あるようなので
改めて勉強することにします。
ありがとうございました
ふらっと C#,C♯,C#(初心者用) Part113
877 :デフォルトの名無しさん[sage]:2014/12/14(日) 20:58:47.93 ID:uwJwvBsv
>>874
> あとpublicをprivateにしても何も変わらんよ
そう思ってたんだけどね。
参照型の配列サイズが決まる、もしくは配列が作られて
tc1
 tc1[0] null
 tc1[1] null
 tc1[2] null
これを期待したら
tc1 null のままだったから質問をしてみた。
メソッド内に書いた場合は期待通りだから、メソッド外で挙動が違うのかな?とか
Unityはエディタのインスペクタ表示が絡むからpublicとprivateで挙動が違うのかな?とか
ふらっと C#,C♯,C#(初心者用) Part113
881 :デフォルトの名無しさん[sage]:2014/12/14(日) 21:07:19.26 ID:uwJwvBsv
>>875
> ぬるぽで落ちたから、で判断したんじゃないよな?
デバッガ(VC2013+VCT)で配列に格納する前の行にブレークポイントをかけて
変数を見てるチェックしてます。
最初の書きこみのときはVCTをつかってなかったので if で判定してプリントデバッグでしました。
ふらっと C#,C♯,C#(初心者用) Part113
885 :デフォルトの名無しさん[sage]:2014/12/14(日) 21:26:21.74 ID:uwJwvBsv
再現コードのつもりで書いたものが普通にちゃんと動いた。
わけわからぬ…
using UnityEngine;
using System.Collections;

public enum TEAMTYPE : int{
TEAMTYPEFRIEND=0,
TEAMTYPEENEMY
}
public PartyState class {
public TEAMTYPE Team;
}
public class AAAclas : MonoBehaviour {

public PartyState[] FriendParty= new PartyUnitState[5];
private PartyState[] EnemyParty= new PartyUnitState[5];

Start()
{
if ( FriendParty==null )
{
Debug.Log("friend null DAZE");
}
if ( EnemyParty==null )
{
Debug.Log("Enemy null DAZE");
}
}
}
ふらっと C#,C♯,C#(初心者用) Part113
886 :デフォルトの名無しさん[sage]:2014/12/14(日) 21:29:36.23 ID:uwJwvBsv
>>884
タイプミスしちゃってて申し訳ない
VisualStudio2013pro + VisualStudioTools for unity
VS2013+VST が正しい感じの表記

ちなみにこれ
https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2
ふらっと C#,C♯,C#(初心者用) Part113
889 :デフォルトの名無しさん[sage]:2014/12/14(日) 21:59:23.48 ID:uwJwvBsv
>>887
public PartyState[] FriendParty;
Start(){
FriendParty = new PartyState[5];
}
こう書いていたものを宣言でまとめてできるっぽいぞ?int[]では出来たし、と思って
public PartyState[] FriendParty= new PartyState[5];
こう変えたらだめだった、という。

885の再現コードがさりげなくバグあり()だったりと酷い状況ですので
ここらで失礼します。
後日原因が分かったら極力簡潔なかたちで報告したいと思います。
テストコード埋め込んでたらソースがぐちゃぐちゃに・・・


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。