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

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

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

Re[6]: 質問)クラスの初歩 Part2


(過去ログ 27 を表示中)

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

■12325 / inTopicNo.1)  質問)クラスの初歩 Part2
  
□投稿者/ Yosi (9回)-(2008/01/08(Tue) 01:00:36)

分類:[C#] 

開発環境:MicroSoft Visual C# 2005 Express Edition
使用言語:C#

//基本的なソース Part32

using System;

class sample
{
public int a;
public int b;
public void sample(int x,int y){
a=x;
b=y;
}
public void calc(){
Console.WriteLine(a*b);
}
public int calc(int var1){
return a*var1;
}
public int calc(int var1,int var2){
int answer=(var1+var2)*b;
return answer;
}
}

class sample32
{
public static void Main()
{
sample sa=new sample(10,50);
Console.WriteLine(sa.calc(100));
}
}

//基本的なソース Part33

using System;

class MyExam1
{
public int i;
MyExam1(int a)
{
i = a;
}
public int ReturnData(int j)
{
return (i * j);
}
public void DataView(int ret){
int cnt;
for(cnt=1;cnt<10;cnt++){
Console.WriteLine((i+ret)*cnt);
}
}
}
class sample33
{
public static void Main()
{
MyExam1 me = new MyExam1(10);
int ret;
ret = me.ReturnData(10);
me.DataView(ret);
}
}
なんですが
それぞれ
'sample': メンバ名をそれを囲む型の名前と同じにすることはできません。
'MyExam1.MyExam1(int)' はアクセスできない保護レベルになっています。
とひとつずつですがエラー表示されました。
たびたびこんな平凡以下の質問されると癪と思いますがよろしくお願いします
引用返信 編集キー/
■12326 / inTopicNo.2)  Re[1]: 質問)クラスの初歩 Part2
□投稿者/ 倉田 有大 (95回)-(2008/01/08(Tue) 01:12:40)
No12325 (Yosi さん) に返信
> 開発環境:MicroSoft Visual C# 2005 Express Edition
> 使用言語:C#
>
> //基本的なソース Part32
>
> using System;
>
> class sample
> {
> public int a;
> public int b;
> public void sample(int x,int y){
> a=x;
> b=y;
> }
> public void calc(){
> Console.WriteLine(a*b);
> }
> public int calc(int var1){
> return a*var1;
> }
> public int calc(int var1,int var2){
> int answer=(var1+var2)*b;
> return answer;
> }
> }
>
> class sample32
> {
> public static void Main()
> {
> sample sa=new sample(10,50);
> Console.WriteLine(sa.calc(100));
> }
> }
> と
> //基本的なソース Part33
>
> using System;
>
> class MyExam1
> {
> public int i;
> MyExam1(int a)
> {
> i = a;
> }
> public int ReturnData(int j)
> {
> return (i * j);
> }
> public void DataView(int ret){
> int cnt;
> for(cnt=1;cnt<10;cnt++){
> Console.WriteLine((i+ret)*cnt);
> }
> }
> }
> class sample33
> {
> public static void Main()
> {
> MyExam1 me = new MyExam1(10);
> int ret;
> ret = me.ReturnData(10);
> me.DataView(ret);
> }
> }
> なんですが
> それぞれ
> 'sample': メンバ名をそれを囲む型の名前と同じにすることはできません。
> 'MyExam1.MyExam1(int)' はアクセスできない保護レベルになっています。
> とひとつずつですがエラー表示されました。
> たびたびこんな平凡以下の質問されると癪と思いますがよろしくお願いします
1名前かえましょう
2public宣言
こうかな
wiiからなので簡単に
引用返信 編集キー/
■12330 / inTopicNo.3)  Re[1]: 質問)クラスの初歩 Part2
□投稿者/ やまだ (2回)-(2008/01/08(Tue) 02:59:10)
倉田さんの書かれてるとおりですが、ちょっとだけ補足。

>'sample': メンバ名をそれを囲む型の名前と同じにすることはできません。
クラス名と同じ名前で定義できるのは「コンストラクタ」です。
それ以外のメソッドは別の名前で定義してください。
コンストラクタのつもりなら、宣言の仕方が間違っていると思います。

>'MyExam1.MyExam1(int)' はアクセスできない保護レベルになっています。
そのとおり、クラスが公開されていないからアクセスできない、ということだと思います。

引用返信 編集キー/
■12348 / inTopicNo.4)  Re[2]: 質問)クラスの初歩 Part2
□投稿者/ Yosi (10回)-(2008/01/08(Tue) 13:32:58)
No12330 (やまだ さん) に返信
> 倉田さんの書かれてるとおりですが、ちょっとだけ補足。
>
> >'sample': メンバ名をそれを囲む型の名前と同じにすることはできません。
> クラス名と同じ名前で定義できるのは「コンストラクタ」です。
> それ以外のメソッドは別の名前で定義してください。
> コンストラクタのつもりなら、宣言の仕方が間違っていると思います。
>
> >'MyExam1.MyExam1(int)' はアクセスできない保護レベルになっています。
> そのとおり、クラスが公開されていないからアクセスできない、ということだと思います。
>


二つ目のソースで
public void MyExamとして
やってみたんですが
今度は
「引数を '1' 個指定できる、メソッド 'MyExam1' のオーバーロードはありません。」
と表示されました
引用返信 編集キー/
■12355 / inTopicNo.5)  Re[3]: 質問)クラスの初歩 Part2
□投稿者/ 刈歩 菜良 (84回)-(2008/01/08(Tue) 15:29:27)
刈歩 菜良 さんの Web サイト
2008/01/10(Thu) 12:14:59 編集(投稿者)

> 二つ目のソースで
> public void MyExamとして
> やってみたんですが
これではどこをどう変えたのかよくわかりません。

> 今度は
> 「引数を '1' 個指定できる、メソッド 'MyExam1' のオーバーロードはありません。」
> と表示されました
エラーメッセージの通り、MyExam1の引数1個のコンストラクタを呼び出しているのに、定義がされていないということです。

解決方法は2つ。
・引数1個のコンストラクタを定義する
・引数1個のコンストラクタを呼び出さない
です。

# ボケボケ部分を修正しました。(^^ゞ
# 話の流れには影響なかったですが...
引用返信 編集キー/
■12446 / inTopicNo.6)  Re[4]: 質問)クラスの初歩 Part2
□投稿者/ Yosi (15回)-(2008/01/09(Wed) 18:37:11)
No12355 (刈歩 菜良 さん) に返信
>>二つ目のソースで
>>public void MyExamとして
>>やってみたんですが
> これではどこをどう変えたのかよくわかりません。
>
「基本的なソースPart32」
から
「 MyExam1(int a)」

「public void MyExam1(int a)」
としました
引用返信 編集キー/
■12464 / inTopicNo.7)  Re[5]: 質問)クラスの初歩 Part2
□投稿者/ 倉田 有大 (96回)-(2008/01/09(Wed) 22:47:00)
No12446 (Yosi さん) に返信
> ■No12355 (刈歩 菜良 さん) に返信
> >>二つ目のソースで
> >>public void MyExamとして
> >>やってみたんですが
>>これではどこをどう変えたのかよくわかりません。
>>
> 「基本的なソースPart32」
> から
> 「 MyExam1(int a)」
> を
> 「public void MyExam1(int a)」
> としました

コンストラクタにvoidはいらないんじゃないかな
引用返信 編集キー/
■12468 / inTopicNo.8)  Re[6]: 質問)クラスの初歩 Part2
□投稿者/ Yosi (17回)-(2008/01/10(Thu) 00:08:31)
わかりました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -