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

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

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

Re[14]: 値渡しについて


(過去ログ 61 を表示中)

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

■35097 / inTopicNo.1)  値渡しについて
  
□投稿者/ 新人 (4回)-(2009/04/20(Mon) 12:24:26)

分類:[VB.NET/VB2005 以降] 

.NET初心者です。
オブジェクト指向とうものを理解するために自分でサンプルコードを考えてみましたがエラーが出てしまいました。
オブジェクト値渡しに入れたaintomoto配列の一番目にaint(200)を表示させるデータをsampleに呼ばせたいのですが
Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。
と表示されます。どうすればよいのでしょうか?

ソースは以下の通りです
Public Class sample
Private Sub sample_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
値渡し.Show()
End Sub

Private Sub 値渡し(ByVal aint() As Integer)
aint(1) = 200
Dim aintmoto() As Integer = {1, 2, 3}
値渡し(aintmoto)
MsgBox("aintmoto(1).toString")
End Sub


End Class
引用返信 編集キー/
■35100 / inTopicNo.2)  Re[1]: 値渡しについて
□投稿者/ はつね (995回)-(2009/04/20(Mon) 13:26:01)
はつね さんの Web サイト
No35097 (新人 さん) に返信
> 自分でサンプルコードを考えてみましたがエラーが出てしまいました。

どのようなエラーですか?

> 値渡し.Show()

Showメソッドをどのような目的で使っていますか?
Private Subを呼ぶのであれば Call 値渡し(・・・・)です。
・・・・の部分は、今回のサンプルであれば、Integer型の配列変数を指定するはずです。


> Private Sub 値渡し(ByVal aint() As Integer)
>   aint(1) = 200
>   Dim aintmoto() As Integer = {1, 2, 3}
>   値渡し(aintmoto)    <---------------------------(*)
>   MsgBox("aintmoto(1).toString")
> End Sub

(*)の部分で自分で自分を呼び出しています。
これではいつまでたってもMsgBoxが実行されることはありません。



引用返信 編集キー/
■35103 / inTopicNo.3)  Re[2]: 値渡しについて
□投稿者/ 新人 (5回)-(2009/04/20(Mon) 15:11:12)
No35100 (はつね さん) に返信
> ■No35097 (新人 さん) に返信
>>自分でサンプルコードを考えてみましたがエラーが出てしまいました。
>
> どのようなエラーですか?
Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。
とでてます。

すいません、よく考えてみれば配列に関しても知識があいまいなのでソースを変更しました。
以上が変更したコードです。

Public Class sample
Private Sub sample_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Call 値渡し() - - - - - - - (*)
End Sub
Private Sub 値渡し(ByVal aint As Integer)
aint = 200
MsgBox("aint")
End Sub

End Class

が、(*)においてやはり不具合が生じています。
ケースとしてCall 値渡し()の場合、Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。
とエラーが出ます。

また()部に(aint)と入力しても”名前aintは宣言されていませんと出て上手くいきません。

お手数ですがどのようにすれば良いのでしょうか?
引用返信 編集キー/
■35104 / inTopicNo.4)  Re[3]: 値渡しについて
□投稿者/ Hongliang (366回)-(2009/04/20(Mon) 15:42:47)
エラーメッセージ通り、

> Private Sub 値渡し(ByVal aint As Integer)
で値渡しメソッドは Integer 型の引数を一つ要求しているのに、
> Call 値渡し() - - - - - - - (*)
ではその要求されている引数を渡せていません。

というか、ファーストポストのソースを見る限り、参照型の値渡しを調べているところのようです。
Integer は値型ですので、参照型と値型の値渡しの違いを見るならともかく、配列の代用にはなりません。
引用返信 編集キー/
■35105 / inTopicNo.5)  Re[4]: 値渡しについて
□投稿者/ 新人 (7回)-(2009/04/20(Mon) 16:05:29)
No35104 (Hongliang さん) に返信
> エラーメッセージ通り、
>
>> Private Sub 値渡し(ByVal aint As Integer)
> で値渡しメソッドは Integer 型の引数を一つ要求しているのに、
>> Call 値渡し() - - - - - - - (*)
> ではその要求されている引数を渡せていません。
>

ではどのようにしたらよろしいでしょうか。
引用返信 編集キー/
■35106 / inTopicNo.6)  Re[5]: 値渡しについて
□投稿者/ Hongliang (367回)-(2009/04/20(Mon) 16:40:19)
> ではどのようにしたらよろしいでしょうか。

いや、そりゃ、渡したい値を渡してくださいよ。
MsgBox 関数の呼び出しだって String 型の引数を渡してるでしょう?

// 「何を渡せばいいか」と言われても返答に困りますが。何のためのサンプルコードで何を確かめたいのかってところから始めないといけませんし。
引用返信 編集キー/
■35107 / inTopicNo.7)  Re[3]: 値渡しについて
□投稿者/ はつね (996回)-(2009/04/20(Mon) 16:45:11)
はつね さんの Web サイト
No35103 (新人 さん) に返信
>         Call 値渡し() - - - - - - - (*)

>     Private Sub 値渡し(ByVal aint As Integer)

これも「値渡し」サブプロシージャを呼び出すときに、Integer型の変数を指定していません。
どちらが正しいというよりかは、不整合が発生しています。


(1)サブプロシージャの宣言の方が正しいのであれば、Callのところに値を指定してください。
(2)Callの方が正しいのであれば、サブプロシージャの宣言のところでパラメタは指定しないで下さい。

(1)か(2)のどちらにするか、これを決めるのは掲示板で見ているほかの人のではなく質問者さん
自身が決めてそれに合わせて直してください。



引用返信 編集キー/
■35108 / inTopicNo.8)  Re[6]: 値渡しについて
□投稿者/ 新人 (9回)-(2009/04/20(Mon) 16:54:08)
No35106 (Hongliang さん) に返信
>>ではどのようにしたらよろしいでしょうか。
>
> いや、そりゃ、渡したい値を渡してくださいよ。
> MsgBox 関数の呼び出しだって String 型の引数を渡してるでしょう?
>
> // 「何を渡せばいいか」と言われても返答に困りますが。何のためのサンプルコードで何を確かめたいのかってところから始めないといけませんし。

すいません、言葉足らずでした。
何を渡せばいいのか、というよりそもそもどう渡したらいいのかがわからないのです。
サンプルコード自体は自分で考えたもので単に値渡しをやってみたいという目的で作ったものです。

で、現在は
>いや、そりゃ、渡したい値を渡してくださいよ。
とのご指摘がありますが、その渡し方がわからない。とこのような状況です。
自分でも調べてはいるのですが、解決のめどはたっていません。
お手数ですが、どうか教えてくれませんか。
引用返信 編集キー/
■35109 / inTopicNo.9)  Re[7]: 値渡しについて
□投稿者/ はつね (997回)-(2009/04/20(Mon) 17:00:22)
はつね さんの Web サイト
2009/04/20(Mon) 17:02:01 編集(投稿者)

No35108 (新人 さん) に返信

解決方法です。

(1)
[ヘルプ]メニューの下の[検索]メニューを開いて、「値渡し」で検索します。
(2)
検索結果から「引数の値渡しおよび参照渡し」をクリックして表示して内容を熟読します。
(3)
下のほうに「概念」というのがあってそこに「プロシージャのパラメータと引数」というのがあるので、それをクリックして表示して内容を熟読します。

引用返信 編集キー/
■35112 / inTopicNo.10)  Re[4]: 値渡しについて
□投稿者/ 新人 (11回)-(2009/04/20(Mon) 17:20:17)
重ね重ね失礼します。
ヘルプを呼んでも正直?でした。
概念は理解できたと思うのですが、肝心のコード部分はどうしたらよいかさっぱりです。

>1)サブプロシージャの宣言の方が正しいのであれば、Callのところに値を指定してください。
>(2)Callの方が正しいのであれば、サブプロシージャの宣言のところでパラメタは指定しないで下さい。

>(1)か(2)のどちらにするか、これを決めるのは掲示板で見ているほかの人のではなく質問者さん
自身が決めてそれに合わせて直してください。

とありますが、つまるところ(1)、(2)の決め方をどうコードに記述したらできるのかがわからないのです。
正答例があれば掴めるのですが…、できればどなたか例を示して教えてくれませんか?


引用返信 編集キー/
■35113 / inTopicNo.11)  Re[5]: 値渡しについて
□投稿者/ はつね (999回)-(2009/04/20(Mon) 17:33:18)
はつね さんの Web サイト
2009/04/20(Mon) 17:56:18 編集(投稿者)

No35112 (新人 さん) に返信
> 重ね重ね失礼します。
> ヘルプを呼んでも正直?でした。
> 概念は理解できたと思うのですが、肝心のコード部分はどうしたらよいかさっぱりです。

ヘルプに図入りでサンプルコードのっていますけど。。。。。
#ヘルプの「Sub プロシージャ」のところとかにも


正直、コード示されて理解した気になるよりも、ヘルプを読んでコードについての解説も理解した方がいいと思うのです(質問内容、その後のQAみるかぎり)。もしくは入門書買ってきて読むとか。

追記:
なんかヘルプ読んでといっても改めて読んでいただけていない様な気もするので「Sub プロシージャ」のヘルプへのURLなどはってみる。
http://msdn.microsoft.com/ja-jp/library/831f9wka.aspx

引用返信 編集キー/
■35140 / inTopicNo.12)  Re[6]: 値渡しについて
□投稿者/ 倉田 有大 (573回)-(2009/04/21(Tue) 08:37:02)
話はそれますが、メソッド名に日本語を見ると、慣れてないから、思考がとまってしまうw

>ケースとしてCall 値渡し()の場合、Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。

VB忘れましたが
Call 値渡し() 

Call 値渡し(100)

これでどうですか。

aint = 200
MsgBox("aint")

aint = 200
MsgBox(aint.ToString())

VBでもToString()あるのかな?



引用返信 編集キー/
■35142 / inTopicNo.13)  Re[7]: 値渡しについて
□投稿者/ επιστημη (1895回)-(2009/04/21(Tue) 09:36:00)
επιστημη さんの Web サイト
> >ケースとしてCall 値渡し()の場合、Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。
>
> VB忘れましたが
> Call 値渡し() 
> ↓
> Call 値渡し(100)
>
> これでどうですか。

いや、配列渡してあげないと...

引用返信 編集キー/
■35144 / inTopicNo.14)  Re[8]: 値渡しについて
□投稿者/ 新人 (12回)-(2009/04/21(Tue) 10:09:29)
ヘルプ等を呼みはつねさんの貼られたURLなども見てみました。

Integer型からString型に変更してみましたら無事に成功しました。
しかしInteger型で試しますとやはり
Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。
もしくは
名前aintは宣言されていませんと出て上手くいきません。
と表示され上手くはいきません。

入門書はもう持っているのですが、Integer型のやり方については触れていないためどうにもやりようがありません。
ヘルプについても同様であって、手詰まりの状態です。
引用返信 編集キー/
■35146 / inTopicNo.15)  Re[9]: 値渡しについて
□投稿者/ はつね (1002回)-(2009/04/21(Tue) 10:24:44)
はつね さんの Web サイト
No35144 (新人 さん) に返信
> Integer型からString型に変更してみましたら無事に成功しました。
> しかしInteger型で試しますとやはり

Private Sub 値渡し(・・・・・) '←サブプロシージャの宣言
の「・・・・・」の部分と
Call 値渡し(・・・・・) '←サブプロシージャの呼び出し
の「・・・・・」の部分は
同じ型じゃないとダメです。
aint As Integerって書くとの変数、aint() As Integerって書くと配列です。
このとき、aintという同じ名前ですがInteger型変数とInteger型配列ですので別物で「同じ」とは言いません。


> 入門書はもう持っているのですが、Integer型のやり方については触れていないためどうにもやりようがありません。
> ヘルプについても同様であって、手詰まりの状態です。

String型だったらできるんですよね?
型をあわせるってヘルプにも書かれていると思いますし、入門書もその事は触れているはずです。
まずは、配列から離れて、いろいろな変数型で「値渡し」してみたらどうですか?

その次に、配列に関して調べてそれから配列で「値渡し」してみたらどうですか?

たぶん、分からないのは「Integer型」ではなくて「・・・・・」に配列を指定したときなんじゃないですか?


引用返信 編集キー/
■35147 / inTopicNo.16)  Re[10]: 値渡しについて
□投稿者/ 新人 (14回)-(2009/04/21(Tue) 10:53:12)
つまりCall 値渡し(・・・・・)の・・・・・部分に aint As Integer
と入れればよいのですか?入れてもエラーが入るのですが...
引用返信 編集キー/
■35149 / inTopicNo.17)  Re[8]: 値渡しについて
□投稿者/ 倉田 有大 (574回)-(2009/04/21(Tue) 11:39:17)
No35142 (επιστημη さん) に返信
>>>ケースとしてCall 値渡し()の場合、Private Sub 値渡し(aint() As Integer)' のパラメータ 'aint' に対して引数が指定されていません。
>>
>>VB忘れましたが
>>Call 値渡し() 
>>↓
>>Call 値渡し(100)
>>
>>これでどうですか。
> 
> いや、配列渡してあげないと...

うわ
Private Sub 値渡し(ByVal aint As Integer)
こっちみてました

VBいんすこしてないのでC#だと

private void Form1_Load(object sender, EventArgs e)
{
    int[] a = { 1, 2, 3 };
    test(a);
}

public void test(int[] a)
{
}

こういうこと?
なんか、質問読んでたら混乱してきたw

引用返信 編集キー/
■35150 / inTopicNo.18)  Re[9]: 値渡しについて
□投稿者/ biac (91回)-(2009/04/21(Tue) 11:51:50)
biac さんの Web サイト
> Integer型からString型に変更してみましたら無事に成功しました。

その成功したコードを載せてもらえませんか?

引用返信 編集キー/
■35151 / inTopicNo.19)  Re[11]: 値渡しについて
□投稿者/ はつね (1003回)-(2009/04/21(Tue) 11:56:12)
はつね さんの Web サイト
2009/04/21(Tue) 11:57:10 編集(投稿者)

No35147 (新人 さん) に返信
> つまりCall 値渡し(・・・・・)の・・・・・部分に aint As Integer
> と入れればよいのですか?入れてもエラーが入るのですが...

String型だったら上手く言ったんですよね?
そのうまくいったソースを投稿してもらえませんか?

そして、その上手く行ったソースで、「As String」ってなっているところを「As Integer」に直したらどうなるかを報告して頂けませんか?


かなり基礎の基礎のところでプログラミングというものが分かってらっしゃらないと思います。
掲示板ではダメだということではありませんが(この問題については最後までお付き合いする気持ちあり)、どうやら手元にある入門書のレベルがまたまだ質問者に方には高度すぎるようなので、「変数とはなに?」「パラメタとはなに?」というのが分かりやすく書かれた入門書を探してみるのも同時にやった方がいいと思います。

なお、エラーが出ますってのは情報としての価値はほとんどないです。どんなエラーが出たかを正確にご提示下さい。
#エラーを理解するのはプログラミング上達の第一歩


引用返信 編集キー/
■35152 / inTopicNo.20)  Re[9]: 値渡しについて
 
□投稿者/ 新人 (15回)-(2009/04/21(Tue) 12:20:00)
String型では

Public Class sample
Private Sub sample_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Call 値渡し("aint")
End Sub

  Private Sub 値渡し(ByVal aint As String)
aint = 200
MsgBox(aint)
End Sub

このような形だと上手くいきました。

そして、Integer型にしますと
Call 値渡し("aint")の部分においてInvalidCastExceptionはハンドルされませんでした、String "aint" から型 'Integer' への変換は無効です。
とでましたのでCall 値渡し("aint")の""を抜いてCall 値渡し(aint)にしました。
そこでaintは宣言されていませんとでました、現状はここまでです。

>「変数とはなに?」「パラメタとはなに?」というのが分かりやすく書かれた入門書を探してみるのも同時にやった方がいいと思います。
変数は大丈夫だと思うのですが、やはりパラメタに関しては不安はありますね。
何かお勧めの参考書があれば教えてもらってもよろしいでしょうか。
引用返信 編集キー/

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

管理者用

- Child Tree -