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

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

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

diff利用

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

■84876 / inTopicNo.1)  diff利用
  
□投稿者/ komattasan (1回)-(2017/08/14(Mon) 22:32:40)

分類:[C#] 

2017/08/14(Mon) 22:33:40 編集(投稿者)
2017/08/14(Mon) 22:33:36 編集(投稿者)

分類:[C#] 

プログラム初心者です。
Visual Studio2017で、C#を使っています。
http://d.hatena.ne.jp/siokoshou/20070315
のURLにあるdiffを取り入れようとしましたが、
つまずいてしまいました。お助けいただけないでしょうか。


以下がやったことです。
・コンソールアプリを新規作成(ConsoleApp11となっていました)。
・ConsoleApp11→追加→新しい項目を選択
・Class1.csを追加
・Class1.csをURLのソースに変更
・Program.csで以下を実施
 ・static void Main(string[] args)内にDiffResult[] Diff(string textA, string textB);を追記
 ・using FastDiff;を1行目に追記


エラーは、以下です。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS0501 'Diff(string, string)' は abstract、extern、または partial に指定されていないため、本体を宣言する必要があります。 ConsoleApp11 c:\users\jo\documents\visual studio 2017\Projects\ConsoleApp11\ConsoleApp11\Program.cs 14 アクティブ

引用返信 編集キー/
■84877 / inTopicNo.2)  Re[1]: diff利用
□投稿者/ Azulean (850回)-(2017/08/15(Tue) 08:28:26)
No84876 (komattasan さん) に返信
> ・Program.csで以下を実施
>  ・static void Main(string[] args)内にDiffResult[] Diff(string textA, string textB);を追記

クラスのメソッドを利用するために、シグネチャ(戻り値+名前+引数)を書き写す必要はありません。
今回のメソッドは static メソッドなので DiffResult[] result = FastDiff.Diff(文字列変数A, 文字列変数B); という感じで使います。
引用返信 編集キー/
■84878 / inTopicNo.3)  Re[1]: diff利用
□投稿者/ 魔界の仮面弁士 (1383回)-(2017/08/15(Tue) 08:30:49)
No84876 (komattasan さん) に返信
> ・Program.csで以下を実施
>  ・static void Main(string[] args)内にDiffResult[] Diff(string textA, string textB);を追記

『DiffResult[] Diff(string textA, string textB);を追記』したのは何故でしょうか。

また、Main メソッドは
 void Main(string[] args)
ではなく
 static void Main(string[] args)
という定義なわけですが、この「static」の意味は把握されていますでしょうか。


> エラー CS0501 'Diff(string, string)' は abstract、extern、または partial に指定されていないため、本体を宣言する必要があります。
このエラーの理由は、追記した Diff メソッドの宣言が
 DiffResult[] Diff(string textA, string textB);
 {
  //
  // DoSomething
  //
  return 結果; // DiffResult[]型
 }
ではなく、処理本体の無い
 DiffResult[] Diff(string textA, string textB);
という定義になっていたためでしょう。

本体部の無いメソッドというのは、
 ・interface のメソッド定義
 ・外部 DLL で定義された API のメソッド(extern)
 ・継承先で実装せねばならない抽象メソッド(abstract)
 ・本体部が別の .cs ファイルで定義された部分メソッド(partial)
のいずれかに限られますが、今回はそのいずれでもないため、エラーになっています。


先のサンプルを利用するだけであれば、class Program 内にメソッドを追加する必要は無く、
static void Main の中で
 var result = FastDiff.Diff( 元テキスト, 変更テキスト );
あるいは
 var result = FastDiff.Diff( 元テキスト, 変更テキスト, DiffOption構造体 );
のように呼び出してやるだけで OK です。
上記の result の型は、FastDiff.DiffResult の配列になります。
引用返信 編集キー/
■84879 / inTopicNo.4)  Re[2]: diff利用
□投稿者/ komattasan (2回)-(2017/08/15(Tue) 10:47:08)
ありがとうございました。
解決しました。
基礎がないとあらためて思いました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ