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

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

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

Re[11]: 変数=new 構造体名(a,b) という構文


(過去ログ 135 を表示中)

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

■79775 / inTopicNo.1)  変数=new 構造体名(a,b) という構文
  
□投稿者/ DOZO (5回)-(2016/05/15(Sun) 00:25:39)

分類:[C#] 

-----------------------------
変数=new asd.vector(a,b)
-----------------------------

という記述について質問させていただきます。

私がわかっていること
@asd.Vectorは2つのフィールドを持つ構造体である。
A構造体名 インスタンス名 = new 構造体名()  という構文、

変数=new asd.vector (a,b) のnewがどういう役割をもっているのかわかりません。もしかして、Aの左辺省略ができるのでしょうか?

ご存知の方教えてくださいませ。よろしくお願いします。
引用返信 編集キー/
■79776 / inTopicNo.2)  Re[1]: 変数=new 構造体名(a,b) という構文
□投稿者/ Azulean (641回)-(2016/05/15(Sun) 08:22:51)
No79775 (DOZO さん) に返信
> 変数=new asd.vector (a,b) のnewがどういう役割をもっているのかわかりません。もしかして、Aの左辺省略ができるのでしょうか?

new という英単語の意味を考えると想像できるかもしれませんが、「新しく作る」です。
「asd.vector という構造体を新しく作る」

左辺を省略することもできますが、その場合、「新しく作って捨てる」なので、ほとんどの場合、無意味になります。
やりたいことは、 a と b の値を持つ、asd.vector を作り、それを利用したいのですよね?
引用返信 編集キー/
■79777 / inTopicNo.3)  Re[2]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (6回)-(2016/05/15(Sun) 16:54:53)
 レスありがとうございます。C#の構造体について私の認識が間違っているのかもしれません。C言語と同様に

-----------------------------------
struct	タグ名 {
	データ型 メンバ名;
};
---------------------------------- という構文で
---------------------------------- 
strcut vector2DF{
	float x;
	float y;
};


struct vector2DF hensuu ;

----------------------------------


という形で構造体を利用するものだと思っていました。


DLLにてstruct asd.vector2DFが定義されています。

----------------------------------
変数=new asd.vector2DF(a,b)
----------------------------------

 となっており構造体変数が宣言されてません。なぜこの状態で構造体を使うことができるのかがわかりません。


https://github.com/altseed/STGLecture/blob/master/Document/cs/03.md 
このサイトのコードを見ながら質問させて頂いてます。
文章のおかしいところありましたらご指摘いただけると嬉しいです。

引用返信 編集キー/
■79778 / inTopicNo.4)  Re[3]: 変数=new 構造体名(a,b) という構文
□投稿者/ Hongliang (430回)-(2016/05/15(Sun) 18:09:05)
んーと、
asd.vector2DF v = new asd.vector2DF(a, b);
ではなくて
v = new asd.vector2DF(a, b);
と書いているが、このvはどこにも宣言されていないはずだ、という旨のご質問でよろしいでしょうか?

ご指定のページにあるサンプルコードにはそもそもこの構造のものは出現していないように見えます。
new asd.Vector2DFが出現しているのは
player.Position = new asd.Vector2DF(320, 240);
というのだけですよね。
この場合、playerの型であるasd.TextureObject2Dクラスに、PositionというVector2DF型のフィールド(またはプロパティ)が定義されていると考えられます。
引用返信 編集キー/
■79786 / inTopicNo.5)  Re[4]: 変数=new 構造体名(a,b) という構文
□投稿者/ 774RR (399回)-(2016/05/16(Mon) 10:56:47)
おんとぴ C++ がわかるのなら

class TextureObject2D {
    ...
    Vector2DF Position;
    ...
}
が namespace asd 中に入っているだけのこと、と解釈すればいいっす(フィールドな場合の例)
new Vector2DF(320, 240) した結果を player.Position に operator= しているわけっす。
C# は gc する言語なので new は必要だけど delete は不要 (new 結果が gc 対象になってるだけ)

おふとぴ:オイラは C++er なので

struct foo
{
    public int x;
    public int y;
    foo(int xx, int yy) 
    {
        this.x = xx;
        this.y = yy;
    }
}

foo a = new foo(3, 4);

と書いたら
1. a のための記憶域がスタック上に取られる
2. new foo(3, 4) が1つインスタンスを(ヒープなりスタックなりに)生成する
3. operator= が発生 (new したインスタンスからスタック上の a へ)
4. new したインスタンスが gc 対象になる
のかと思っていたが ildasm で見る限り a に対する直接初期化がなされるっぽい。

struct を関数に値渡ししても IL レベルでは関数呼ぶ側は ref 渡ししてるし
呼ばれた関数中で変更操作してないと ref 元を直接見てるし
呼ばれた関数中で変更操作したらそこで dup してるのか。
なかなかよくできてる様子。

IL 読むほうが言語仕様読むより楽ってのもアレな気がする。
まあそれで理解できるのは単に内部実装にすぎないわけだけど。

ildasm を開いたままではビルドできないんだ・・・不便。


引用返信 編集キー/
■79788 / inTopicNo.6)  Re[4]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (8回)-(2016/05/16(Mon) 14:32:32)
Hongliangさん>

 Positionの型がわかっていませんでした。これで読み解けるコードが一段と増えました。どうもありがとうございます(^^)私はHSPからC#に乗り換えた身で、不勉強な面が多数あると思います。ご容赦くださいませ。

 

”””””””””””””””””””””””””””””””””””””
v = new asd.vector2DF(a, b);
と書いているが、このvはどこにも宣言されていないはずだ、という旨のご質問でよろしいでしょうか?”

”””””””””””””””””””””””””””””””””””””


 可能でしたらそのことについても教えてくださいませ。"プレイヤーの移動"33行目で
----------------------------------------------------------------------
player.Position = player.Position + new asd.Vector2DF(0, -1);
----------------------------------------------------------------------
という記述もございます。このように構造体インスタンスに名前をつけることなくいきなり変数のように使ってもいいのでしょうか?

引用返信 編集キー/
■79790 / inTopicNo.7)  Re[5]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (9回)-(2016/05/16(Mon) 14:42:26)
No79786 (774RR さん) に返信

オーバーロード・ガベージコレクションについて把握していませんでした。ご指導ありがとうございます。

--------------------------------------------------------------------------------------
 > C# は gc する言語なので new は必要だけど delete は不要 (new 結果が gc 対象になってるだけ)
--------------------------------------------------------------------------------------

 この記述について教えてくださいませ。newはなぜ必要なのでしょうか?
 
 私の予想は
 @newをつけることがC#におけるインスタンス生成のルールである

 ということです。newなしではエラーがでてしまいました。
引用返信 編集キー/
■79793 / inTopicNo.8)  Re[6]: 変数=new 構造体名(a,b) という構文
□投稿者/ shu (864回)-(2016/05/16(Mon) 14:57:33)
No79790 (DOZO さん) に返信
>
>  この記述について教えてくださいませ。newはなぜ必要なのでしょうか?
>  
>  私の予想は
>  @newをつけることがC#におけるインスタンス生成のルールである
>
>  ということです。newなしではエラーがでてしまいました。

これは
変数=new asd.vector(a,b)

変数=asd.vector(a,b)
のように書いては駄目なのかということなのでしょうか?




引用返信 編集キー/
■79794 / inTopicNo.9)  Re[5]: 変数=new 構造体名(a,b) という構文
□投稿者/ 魔界の仮面弁士 (706回)-(2016/05/16(Mon) 15:18:55)
No79788 (DOZO さん) に返信
> player.Position = player.Position + new asd.Vector2DF(0, -1);
> このように構造体インスタンスに名前をつけることなくいきなり変数のように使ってもいいのでしょうか?

問題ありません。極端な例で言えば、たとえば、
 int a = 123;
 int b = 456;
 int c = a + b;
において、変数 a, b を用いずに
 int c = 123 + 456;
と書く事ができますが、それと同じ事です。
(int 型も構造体であり、123 は int 型のインスタンスです)


Position プロパティのデータ型は、Vector2DF 構造体です。
そして Vector2DF 構造体は、Vector2DF 同士の加算演算が可能です。

int 型というのは、.NET 的には System.Int32 構造体です。
そして Int32 構造体は、Int32 同士の加算演算が可能です。


なお int の場合は、123 といったリテラル表記で記述するので、
通常、new することはありませんが、構造体には違いないので、
 int x = new int();
のように new を使ってインスタンス化することができます。

※ただし Int32 は、引数付きの呼び出しはサポートしていないため、
 上記は単に「int x = 0;」や「int x = default(int);」と同義です。


他の構造体でも同様です。たとえば System.TimeSpan 構造体の場合も
TimeSpan 同士の加算演算が可能なので:

 TimeSpan ts1 = new TimeSpan(0, 40, 0);  // 40 分
 TimeSpan ts2 = new TimeSpan(0, 50, 0);  // 50 分
 ts2 = ts2 + ts1;  // 40分+50分=1時間30分
 Console.WriteLine(ts2.ToString());

上記を

 // 40分+50分=1時間30分
 System.TimeSpan ts3 = new TimeSpan(0, 50, 0) + new TimeSpan(0, 40, 0);
 Console.WriteLine(ts3.ToString());

と書けますし、もっと言えば

 Console.WriteLine((new TimeSpan(0, 50, 0) + new TimeSpan(0, 40, 0)).ToString());

とも書けることになります。
引用返信 編集キー/
■79795 / inTopicNo.10)  Re[6]: 変数=new 構造体名(a,b) という構文
□投稿者/ 魔界の仮面弁士 (707回)-(2016/05/16(Mon) 16:07:58)
No79790 (DOZO さん) に返信
> この記述について教えてくださいませ。newはなぜ必要なのでしょうか?

new は、インスタンスを作成する意味もありますが、それと同時に、
そのデータの初期化処理に用いる引数を受け渡すための仕組みでもあります。
(「コンストラクタ」って分かりますか?)


たとえば、Vector2DF の X / Y フィールドは読み書き可能で、
 asd.Vector2DF v = new asd.Vector2DF();
 v.X = 0;
 v.Y = -1;
のように利用できますが、これを簡単に書けるようにするため、
 asd.Vector2DF v = new asd.Vector2DF(0, -1);
のように、引数付きのコンストラクタが用意されています。


一方、System.TimeSpan 構造体の場合、各プロパティはすべて読み取り専用であり、
各プロパティの初期値を設定できるのは、インスタンス生成時のみです。
このような構造体の場合は、
 TimeSpan v = new TimeSpan();
 v.Hours = 0; // NG
 v.Minutes = 30; // NG
 v.Seconds = 0; // NG
とは書くことはできず、インスタンス生成時にパラメータとして指定して
 TimeSpan v = new TimeSpan(0, 30, 0);
のように利用する事になります。



> newをつけることがC#におけるインスタンス生成のルールである

new を付けた呼び出しが、インスタンス生成のための記述であるのは確かですが、
インスタンス生成の方法は new だけではありません。

たとえば構造体によっては、static なメソッドの戻り値などで
構造体のインスタンスを得られるようになっているものもあります。
(例:int.Parse メソッド、TimeSpan.FromTicks メソッド)



蛇足ですが、先の
 asd.Vector2DF v = new asd.Vector2DF();
 v.X = 0;
 v.Y = -1;
というコードは
 asd.Vector2DF v ;
 v.X = 0;
 v.Y = -1;
のようにも書けます。これは、構造体(≠クラス)は new を呼ばずとも
インスタンス化できるようになっているためです。
https://msdn.microsoft.com/ja-jp/library/0taef578.aspx
引用返信 編集キー/
■79796 / inTopicNo.11)  Re[6]: 変数=new 構造体名(a,b) という構文
□投稿者/ 774RR (400回)-(2016/05/16(Mon) 16:14:08)
> 変数=asd.vector(a,b)
> のように書いては駄目なのかということなのでしょうか?
のことだとオイラも解釈することにする。 C# では書式上これを認めていないだけっす。

C++ では
struct hoge {
    hoge(int x, int y);
    hoge& operator += (const hoge&);
}

hoge a, b;
a+=b; // と書けるのと同様に
名前無し構造体インスタンス (C++ 用語では一時オブジェクトと言う) を使うことができて
a+=hoge(123, 456); // と書ける。右辺は一時オブジェクトであり直ちに消滅
# C++ では一時オブジェクトの生成に new は必要ない (あっちゃだめ)

> @newをつけることがC#におけるインスタンス生成のルールである
はい、そのとおり。
C# では「一時オブジェクトの明示生成」なる文法が無い(必要ない)ので
通常オブジェクトの生成の文法をそのまま利用することになるわけっす。
a+=new hoge(123, 456); // と書くことになる
a+=hoge(123, 456); // とは書かない・書いたらコンパイルエラー

.NET の世界の用語で言うと
「インスタンスは new で作る」
「参照が保持されていないインスタンスは gc 対象となる」
だけのこと。

> Console.WriteLine((new TimeSpan(0, 50, 0) + new TimeSpan(0, 40, 0)).ToString());
この例では、2つの new の結果を保持する式が無いので両者とも gc 対象になるわけです。
もっと言うなら operator + の結果のインスタンスも保持されてないわけで gc 対象になるわけです。

文言「 gc 対象になる」とはつまり
・直ちに記憶域が回収されて再利用されるかもしれないし
・適当なタイミングまで回収が遅延されるかもしれないが、いずれ再利用される
ってこと。

C# では struct は値型 class は参照型の決定的違いがあるけど gc に対する理解は同じでいいっす。

引用返信 編集キー/
■79798 / inTopicNo.12)  Re[7]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (10回)-(2016/05/16(Mon) 23:13:18)
shuさん> 魔界の仮面弁士さん> 774RRさん>

 丁寧な説明と誘導ありがとうございます。
 皆様のおかげで理解できたと思います。


 後進のために私が理解したことを記述させていただきます。間違いがありましたらご指摘お願いします。


@構造体はクラスと違い”new”を使わなくてもインスタンス化できる。newを用いなかった場合初期値は0となる。
Anewを使うことでコンストラクタを呼び出すことができる。引数の指定も可能。
B構造体インスタンスは名前をつけなくても使用可能である。
C同一の構造体は演算できる。

 
 重ねてお礼申し上げます。1日経たのちに解決済みとさせていただきます。
引用返信 編集キー/
■79800 / inTopicNo.13)  Re[8]: 変数=new 構造体名(a,b) という構文
□投稿者/ 774RR (401回)-(2016/05/17(Tue) 07:13:27)
> C同一の構造体は演算できる。
ここだけ若干違うかな・・・

演算が定義されているもの同士なら異 class/struct でも演算できて
演算が定義されていないならば同一 class/struct でも演算できない。

経過時間+経過時間なら意味があって結果は経過時間
時刻+経過時間なら意味があって結果は時刻
経過時間×経過時間には意味がないので演算できない
時刻+時刻には意味がないので演算できない
ベクトルとベクトルの内積は演算出来て結果は実数

何と何が演算出来てどういう結果が得られるかは設計者の意図次第っす。
適切な結果が得られるような演算があるなら実装すべきだし
意味がない演算はできないようにすべきだろう。
引用返信 編集キー/
■79805 / inTopicNo.14)  Re[8]: 変数=new 構造体名(a,b) という構文
□投稿者/ 魔界の仮面弁士 (709回)-(2016/05/17(Tue) 10:38:02)
No79798 (DOZO さん) に返信
> Anewを使うことでコンストラクタを呼び出すことができる。引数の指定も可能。

引数を受け取るコンストラクタが用意されているかどうかは、構造体によって異なります。
どのようなコンストラクタを用意するのかは、その構造体の設計者の意図次第です。

ただし、構造体には「引数なしのコンストラクタ」が必ず存在しており、それは常に public です。
引数なしのコンストラクタを独自に用意してカスタマイズするといったことはできません。


> B構造体インスタンスは名前をつけなくても使用可能である。



> C同一の構造体は演算できる。
これについては No79800 で。
引用返信 編集キー/
■79808 / inTopicNo.15)  Re[9]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (11回)-(2016/05/17(Tue) 13:26:32)
No79800 (774RR さん) に返信

> 経過時間+経過時間なら意味があって結果は経過時間
> 時刻+経過時間なら意味があって結果は時刻
> 経過時間×経過時間には意味がないので演算できない
> 時刻+時刻には意味がないので演算できない
> ベクトルとベクトルの内積は演算出来て結果は実数
>
 了解しました。まだC#のの経験が浅く体験したことはありませんが、感覚的にわかりました。今後読み解く際に重要なことですね。どうもありがとうございます(^o^)
引用返信 編集キー/
■79809 / inTopicNo.16)  Re[9]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (12回)-(2016/05/17(Tue) 14:04:28)
2016/05/17(Tue) 14:09:09 編集(投稿者)
2016/05/17(Tue) 14:05:31 編集(投稿者)
2016/05/17(Tue) 14:05:28 編集(投稿者)

No79805 (魔界の仮面弁士 さん) に返信

>>Anewを使うことでコンストラクタを呼び出すことができる。引数の指定も可能。
>
> 引数を受け取るコンストラクタが用意されているかどうかは、構造体によって異なります。
> どのようなコンストラクタを用意するのかは、その構造体の設計者の意図次第です。
>


 私が考えたことを記述します。

○new演算子が適切なコンストラクタを呼び出す。
○new演算子がなくても自分でフィールドを初期化することができる。
×new演算子を使うと引数つきコンストラクタを呼び出すことができる。

こういうことでしょうか?

 
 

>>B構造体インスタンスは名前をつけなくても使用可能である。


■79794 / inTopicNo.9) で教えていただいた。
------------------------------------------------------------
int a = 123;
 int b = 456;
 int c = a + b;
において、変数 a, b を用いずに
 int c = 123 + 456;
と書く事ができますが、それと同じ事です。
(int 型も構造体であり、123 は int 型のインスタンスです)
------------------------------------------------------------

 のことです。
 インスタンスを生成する際は 
-------------------------------------------
構造体名 インスタンス名= new 構造体名()
-------------------------------------------
 という構文を用いてインスタンスに名前をつけなければいけないと思っていましたが、名前をつけず変数のように構造体をつかってもよい、という点について書きました。
 もしかして、”構造体インスタンス”という表現が適切ではないのでしょうか?

 
 ここを見ました。 https://msdn.microsoft.com/ja-jp/library/0taef578.aspx

 

 お付き合い頂きありがとうございます。もう少々ご教授くださいませ。
 

引用返信 編集キー/
■79810 / inTopicNo.17)  Re[10]: 変数=new 構造体名(a,b) という構文
□投稿者/ 魔界の仮面弁士 (710回)-(2016/05/17(Tue) 15:07:47)
No79809 (DOZO さん) に返信
> ○new演算子が適切なコンストラクタを呼び出す。
> ○new演算子がなくても自分でフィールドを初期化することができる。
> ×new演算子を使うと引数つきコンストラクタを呼び出すことができる。

struct DOZO
{
 public int Value;
}

この構造体を利用する場合、
 DOZO v = new DOZO();
または
 DOZO v;
 v.Value = 0;
のようにします。(引数なしコンストラクタ)


この時点では引数付きコンストラクタは用意されておらず、利用できません。
引数付きコンストラクタが必要なら、構造体側が

struct DOZO
{
 public int Value;
 public DOZO(int i) { this.Value = i; }
}

のように宣言されていなければなりません。
この場合は、以下のようになります。
 DOZO a = new DOZO(); // 引数なしコンストラクタ
 DOZO b = new DOZO(0); // 1 個の int 引数を受け取るコンストラクタ
 //DOZO c = new DOZO("0"); // string を受け取るコンストラクタは用意されていない



> ○new演算子がなくても自分でフィールドを初期化することができる。
public なフィールド(かつ readonly ではない)場合には、呼び出し側からでも値を代入できます。

private なフィールドは、呼び出し側からでは値を代入できず、
構造体自身がセットする必要があります。

readonly なフィールドの場合は、文字通り読み取り専用であり、
後から値を代入することはできません。readonly フィールドに値を代入できるのは、
 public readonly int Value = 5;
のように、フィールド宣言と同時に代入された場合か、もしくは
 public DOZO(int i) { this.Value = i; }
のように、コンストラクタの中で代入された場合のみです。


> >>B構造体インスタンスは名前をつけなくても使用可能である。
> 構造体名 インスタンス名= new 構造体名()
今回の「名前」というのは、変数名のことを指していたのですね?

(質問のタイトルで「変数 = new 構造体名(a,b)」と書かれていましたので)



>  という構文を用いてインスタンスに名前をつけなければいけないと思っていましたが、名前をつけず変数のように構造体をつかってもよい、という点について書きました。

えぇと、たとえば
 // "a" という名の int 型の変数を用意し、そこに int 型のインスタンスを代入
 int a = 10;

 // "v" という名の Vector2DF 型の変数を用意し、そこに Vector2DF 型のインスタンスを代入
 asd.Vector2DF v = new asd.Vector2DF();
のような使い方は御存知だったわけですよね。



だとすれば、左辺が変数ではなくプロパティであっても、
 // "Value" という名の int 型のプロパティに、
 // int 型の値(インスタンス)である整数値 10 をセット
 obj.Value = 10;

 // "Position" という名の Vector2DF 型のプロパティに、
 // Vector2DF 型の値である X = 320, Y = 240 な座標をセット
 player.Position = new asd.Vector2DF(320, 240);
は可能である…ということです。


そして、その型が「+ 演算子」をサポートしていれば、
 obj.Value = obj.Value + 3;
 player.Position = player.Position + new asd.Vector2DF(0, -1);
といった加算もできるというわけで。
引用返信 編集キー/
■79817 / inTopicNo.18)  Re[11]: 変数=new 構造体名(a,b) という構文
□投稿者/ DOZO (13回)-(2016/05/18(Wed) 13:22:15)
No79810 (魔界の仮面弁士 さん) に返信

レスありがとうございます。私の理解を箇条書きにします。おかしな点ありましたらご指摘いただけると嬉しいです。


・new演算子の役割

@オブジェクトを作成しコンストラクタを呼び出す。
A値型の既定コンストラクタを呼び出す。



・構造体について

@使う前に初期化しなければならない。
A引数付きコンストラクタを利用するためには構造体側で予め宣言する必要がある。



・asd.Vector2DF v = new asd.Vector2DF();について
 
asd.vector2DF型変数vを宣言し、初期値を代入していると考えてよろしいのでしょうか?
------------------------------------------------- 
player.Position = new asd.Vector2DF(320, 240);
-------------------------------------------------
このステートメントは理解できました。
インスタンスplayerのプロパティPositionにasd.Vector2DF(320, 240)という値を代入(取得)する、ということだと思います。
 C#における”= ”も基本的には代入の意味を持つのですね。代入ということに考えが至ってませんでした。
引用返信 編集キー/
■79818 / inTopicNo.19)  Re[11]: 変数=new 構造体名(a,b) という構文
□投稿者/ 774RR (402回)-(2016/05/18(Wed) 13:51:09)
「名前をつけずに」ここでいう名前が (C/C++ 用語を使わせてもらうけど) 
「自動変数を使わなくても」ということなら、それはある意味当たり前なのではないかと・・・

C/C++/C# 的に struct の配列があるとき
「配列名」そのものは当該 struct 型ではない
「配列の要素」は当該 struct 型だけど、専用の名前は無い

using System.Drawing; // System.Drawing.Point System.Drawing.Size を使いたい

Point[] a = new Point[2]; // 配列自体は常に参照型であることに注意
// struct だから、各要素は暗黙のうちに自動で作られている
// ※ class 型なら各要素の new が別途必要

// ユーザー定義できないデフォルトコンストラクタによって a の各要素は初期化済み
Console.WriteLine(a[0]); // {0, 0}
// a[1] はデフォルト初期化済みなわけだが、再初期化する
// 厳密には「一時オブジェクトを構築して、その内容を a[1] に代入する」かな。
a[1] = new Point(123, 456);
Console.WriteLine(a[1]); // {123, 456}
// 移動させるのに operator += を使うことができる
a[1] += new Size(20, 30);
Console.WriteLine(a[1]); // {143, 486}


提示例の a が、関数内の局所変数であっても、クラスのメンバ変数(フィールド)であっても
クラスのプロパティ(は C++ には無い概念だけど)であっても、同じことっすよ。

局所変数なら単に a と記述することになるわけだし
フィールド/プロパティなら記述 a は this.a の省略形だし (C++ なら this->a っすね)

オイラたち何か難しいこと書いてるかな? C# 的には、こういう書き方はごく当たり前っぽいけど。

引用返信 編集キー/
■79829 / inTopicNo.20)  Re[12]: 変数=new 構造体名(a,b) という構文
 
□投稿者/ DOZO (14回)-(2016/05/18(Wed) 21:58:27)
2016/05/18(Wed) 21:59:11 編集(投稿者)

No79818 (774RR さん) に返信 

 レスありがとうございます。


 C#における配列の宣言方法を知りませんでした。Cと同じものと思っていたので読み違えがあったようです。教えていただきありがとうございます。 


 トピックが複雑にならないように本スレッドにおいて、構造体型の配列は取り扱わないことにします。今後その旨必要になりましたら改めてスレ立てさせていただきます。お手数おかけしますがご了承くださいませ。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -