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

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

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

Charオブジェクトの取得(VB.NET→C#)

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

■89491 / inTopicNo.1)  Charオブジェクトの取得(VB.NET→C#)
  
□投稿者/ 34 (12回)-(2018/11/30(Fri) 17:24:37)

分類:[C#] 

2018/11/30(Fri) 17:25:11 編集(投稿者)

VB.NETからC#への移植作業を行っているプログラミング初心者です。

VB.NET)

Public printingText As String
Public printingPosition As Integer
Dim line As String = ""

line += printingText.Chars(printingPosition)

C#)

public string printingText;
public int printingPosition;
string line = "";

line += printingText.Chars(printingPosition);

C#のコード、Charsの下に赤い波線のエラーが表示され
「'string'に'Chars'の定義が含まれておらず、型'string'の最初の引数を受け付ける拡張メソッド'Chars'が見つかりませんでした。
usingディレクティブまたはアセンブリ参照が不足していない事を確認して下さい。」と表示されます。
どうれば解決しますでしょうか。宜しくお願い致します。
引用返信 編集キー/
■89492 / inTopicNo.2)  Re[1]: Charオブジェクトの取得(VB.NET→C#)
□投稿者/ 魔界の仮面弁士 (1962回)-(2018/11/30(Fri) 17:41:47)
No89491 (34 さん) に返信
> どうれば解決しますでしょうか。
言語仕様的には No89417No89343 と同種の話ではあるのですが、
VB と C# のインデクサの違いは、慣れるまで分かりにくいでしょうね…。


> Dim line As String = ""
> line += printingText.Chars(printingPosition)
VB では普通、文字列連結には += ではなく &= を使います。(+= でも間違いでは無いですが…)

また、String クラスの Chars プロパティは "引数付きのデフォルト プロパティ" なので
.Chars というメンバー名を記述せずに
 line &= printingText(printingPosition)
と書けます。



> line += printingText.Chars(printingPosition);
これは string クラスのインデクサを呼び出す構文なので、
 line += printingText[printingPosition];
と書きます。ちなみに丸括弧で表現するために
 line += printingText.ElementAt(printingPosition);
とも書けますが、今回は前者の表現をお奨めします。
引用返信 編集キー/
■89560 / inTopicNo.3)  Re[2]: Charオブジェクトの取得(VB.NET→C#)
□投稿者/ 34 (13回)-(2018/12/04(Tue) 15:52:24)
魔界の仮面弁士様、毎回とても丁寧な回答ありがとうございます。
無事解決しました。ありがとうございました。

No89492 (魔界の仮面弁士 さん) に返信
> ■No89491 (34 さん) に返信
>>どうれば解決しますでしょうか。
> 言語仕様的には No89417No89343 と同種の話ではあるのですが、
> VB と C# のインデクサの違いは、慣れるまで分かりにくいでしょうね…。
>
>
>>Dim line As String = ""
>>line += printingText.Chars(printingPosition)
> VB では普通、文字列連結には += ではなく &= を使います。(+= でも間違いでは無いですが…)
>
> また、String クラスの Chars プロパティは "引数付きのデフォルト プロパティ" なので
> .Chars というメンバー名を記述せずに
>  line &= printingText(printingPosition)
> と書けます。
>
>
>
>>line += printingText.Chars(printingPosition);
> これは string クラスのインデクサを呼び出す構文なので、
>  line += printingText[printingPosition];
> と書きます。ちなみに丸括弧で表現するために
>  line += printingText.ElementAt(printingPosition);
> とも書けますが、今回は前者の表現をお奨めします。
解決済み
引用返信 編集キー/

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


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

このトピックに書きこむ