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

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

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

Re[2]: メソッドの作り方


(過去ログ 24 を表示中)

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

■10823 / inTopicNo.1)  メソッドの作り方
  
□投稿者/ ハハ (1回)-(2007/11/27(Tue) 18:30:46)

分類:[C#] 

2007/11/27(Tue) 18:37:23 編集(投稿者)

C# の質問です
初心者です。お手柔らかにお願いします

例えばです
test("filepass",8)
を渡して
test(string filepass,int testint)
{
  受け取ったfilepassのファイルを読み込んでtestintの値を格納処理
}
をするようなメソッド(例えばです本当に)をつくるとしたら自分としては使いにくいので

test("filepass") == 8;

このように値を渡して同じ処理をするようにしたいのですがどのように
書いたらいいのかわかりません

質問の意味もわかりにくいですが。お願いいたします。
引用返信 編集キー/
■10827 / inTopicNo.2)  Re[1]: メソッドの作り方
□投稿者/ επιστημη (693回)-(2007/11/27(Tue) 20:03:36)
επιστημη さんの Web サイト
using System;

class FileModifier {
  private string filename;
  public FileModifier(string fn) { filename = fn; }
  public static bool operator==(FileModifier fm, int n) {
    Console.WriteLine("ファイル {0} を数値 {1} で処理します", fm.filename, n);
    return true;
  }
  public static bool operator!=(FileModifier fm, int n) {
    Console.WriteLine("ファイル {0} を数値 {1} で処理しません", fm.filename, n);
    return false;
  }
  public override bool Equals(object o) {
    FileModifier fm = o as FileModifier;
    return fm != null && fm.filename == filename;
  }
  public override int GetHashCode() {
    return filename.GetHashCode();
  }
}

class Foo {
  public FileModifier test(string filename) {
    return new FileModifier(filename);
  }
}

class Program {
  static public void Main() {
    Foo f = new Foo();
    if ( f.test("なにかしら") == 1234 ) {
      Console.WriteLine("ちゃんと処理しました");
    }
  }
}

引用返信 編集キー/
■10830 / inTopicNo.3)  Re[1]: メソッドの作り方
□投稿者/ ハハ (3回)-(2007/11/27(Tue) 21:37:43)
No10823 (ハハ さん) に返信
> 2007/11/27(Tue) 18:37:23 編集(投稿者)
>
> C# の質問です
> 初心者です。お手柔らかにお願いします
>
> 例えばです
> test("filepass",8)
> を渡して
> test(string filepass,int testint)
> {
>   受け取ったfilepassのファイルを読み込んでtestintの値を格納処理
> }
> をするようなメソッド(例えばです本当に)をつくるとしたら自分としては使いにくいので
>
> test("filepass") == 8;
間違いました
test("filepass")=8;です
>
> このように値を渡して同じ処理をするようにしたいのですがどのように
> 書いたらいいのかわかりません
>
> 質問の意味もわかりにくいですが。お願いいたします。
引用返信 編集キー/
■10831 / inTopicNo.4)  Re[2]: メソッドの作り方
□投稿者/ ハハ (4回)-(2007/11/27(Tue) 21:44:48)
No10827 (επιστημη さん) に返信
> using System;
>
> class FileModifier {
> private string filename;
> public FileModifier(string fn) { filename = fn; }
↓のコードは使われるんでしょうか?
> public static bool operator==(FileModifier fm, int n) {
> Console.WriteLine("ファイル {0} を数値 {1} で処理します", fm.filename, n);
> return true;
> }
> public static bool operator!=(FileModifier fm, int n) {
> Console.WriteLine("ファイル {0} を数値 {1} で処理しません", fm.filename, n);
> return false;
> }
↓どうして動くのかわかりません
> public override bool Equals(object o) {
> FileModifier fm = o as FileModifier;
> return fm != null && fm.filename == filename;
> }
> public override int GetHashCode() {
> return filename.GetHashCode();
> }
> }
>
↓コードの意味が良くわかりません
> class Foo {
> public FileModifier test(string filename) {
> return new FileModifier(filename);
> }
> }
>
> class Program {
> static public void Main() {
> Foo f = new Foo();
> if ( f.test("なにかしら") == 1234 ) {
> Console.WriteLine("ちゃんと処理しました");
> }
> }
> }
>

コードを見て考えていますが、いまいち勉強不足か書いている内容がわかりません。
本を見ながら考えますが、もう少し詳細など教えていただけないでしょうか

引用返信 編集キー/
■10838 / inTopicNo.5)  Re[2]: メソッドの作り方
□投稿者/ επιστημη (694回)-(2007/11/27(Tue) 23:19:07)
επιστημη さんの Web サイト
No10830 (ハハ さん) に返信
>>test("filepass") == 8;
> 間違いました
> test("filepass")=8;です
>>
>>このように値を渡して同じ処理をするようにしたいのですがどのように
>>書いたらいいのかわかりません

operator=はオーバーロードできないので無理。

引用返信 編集キー/
■10839 / inTopicNo.6)  Re[3]: メソッドの作り方
□投稿者/ επιστημη (695回)-(2007/11/27(Tue) 23:22:50)
επιστημη さんの Web サイト
> コードを見て考えていますが、いまいち勉強不足か書いている内容がわかりません。

演算子のオーバーロードに関して勉強不足です。

> 本を見ながら考えますが、もう少し詳細など教えていただけないでしょうか

まず本を読んでください。
"初心者にもわかるように説明する"のはものによっては非常に骨の折れる
ことであることをご理解ください。

引用返信 編集キー/
■10841 / inTopicNo.7)  Re[2]: メソッドの作り方
□投稿者/ Azulean (1回)-(2007/11/27(Tue) 23:47:10)
> test("filepass")=8;です

=演算子は無理だけど、<<演算子だといけるので、そっちの方がC++風味でいいのかなぁ?
適当に書いてみたけど、ダメだしされそうなコードだなぁ。

class Foo
{
private string fileName;
public Foo(string fn)
{
fileName = fn;
}

public static Foo operator<<(Foo lhs, int rhs)
{
Console.WriteLine("ファイル{0}に{1}を書く処理", lhs.fileName, rhs.ToString());
return lhs;
}
}

class Program
{
static void Main(string[] args)
{
Foo f = new Foo("testpass");
f <<= 8;
}
}

引用返信 編集キー/
■10847 / inTopicNo.8)  Re[1]: メソッドの作り方
□投稿者/ IIJIMAS (57回)-(2007/11/28(Wed) 01:52:27)
2007/11/28(Wed) 02:25:41 編集(投稿者)
No10823 (ハハ さん) に返信

正直何をなさりたいのかよくわかりませんが。。。

私もちょっと思いつきましたので。

()じゃなくて[]ですが、==じゃなくて=ですよ。

   public class MyClass
    {
        public FileModifier modify;
        public MyClass()
        {
            modify = new FileModifier();
        }
    }
    public class FileModifier
    {
        public int this[string filename]
        {
            set { execute(filename, value); }
        }
        private void execute(string filename, int n)
        {
            Console.WriteLine("ファイル {0} を数値 {1} で処理します", filename, n);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyClass x = new MyClass();
            x.modify["ファイル1"] = 12345;
        }
    }

#一部ネーミングその他パクりです…すいませんです。

Visual Studioでプログラムを動かせるのなら、

1.Mainの中の最初の行にブレークポイントを置く[F9]
2.デバッグ開始[F5]
3.ローカル変数のウィンドウ[Ctrl+D,L]や
  ウォッチウィンドウ[Ctrl+D,W]表示、変数を右クリックでウォッチ式の追加
4.ステップオーバー[F10]、ステップイン[F11]、ステップアウト[Shift+F11]などでステップ実行

で、変数の中身を見てコードを追いかけながら理解を深めてください。

引用返信 編集キー/
■10848 / inTopicNo.9)  Re[2]: メソッドの作り方
□投稿者/ ハハ (5回)-(2007/11/28(Wed) 02:24:33)
No10847 (IIJIMAS さん) に返信
> ■No10823 (ハハ さん) に返信
>
> 正直何をなさりたいのかよくわかりませんが。。。
>
> 私もちょっと思いつきましたので。
>
> ()じゃなくて[]ですが、==じゃなくて=ですよ。
>
> public class MyClass
> {
> public FileModifier modify;
> public MyClass()
> {
> modify = new FileModifier();
> }
> }
> public class FileModifier
> {
> public int this[string filename]
> {
> set { execute(filename, value); }
> }
> private void execute(string filename, int n)
> {
> Console.WriteLine("ファイル {0} を数値 {1} で処理します", filename, n);
> }
> }
> class Program
> {
> static void Main(string[] args)
> {
> MyClass x = new MyClass();
> x.modify["ファイル1"] = 12345;
> }
> }
>
> #一部ネーミングパクり…

あ、有難う御座います。インデクサでと自分も考えていたのですが、なるほどそう書くんですね。
勉強になりました。ありがとうございます
初めの方も有難う御座います。自分が勉強不足なので分かりませんでしたが、初めのコードをこぴり
内容をすべて理解出来るよう調べます。皆様有難う御座いました
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -